У вас есть папки с книгами Excel, которые должны питать веб-сервис SOAP, EDI-партнёра, регуляторное представление или ERP-интеграцию — и принимающая система говорит на XML, а не на XLSX. Открывать каждый файл в Excel и сохранять его как XML вручную перестаёт работать после второй книги, а встроенный экспорт XML в Excel игнорирует требования схемы, которые дальнейшая система реально проверяет. Total Excel Converter X конвертирует XLS- и XLSX-файлы в правильно сформированный XML из командной строки, пакетно, без графического интерфейса и без установки Microsoft Excel. Установите его на сервер Windows, вызывайте из скрипта или через ActiveX, и он будет работать автоматически.
*.xlsx), и конвертер обработает каждую подходящую книгу за один запуск
(30 дней, без email)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
Excel — это сетка. Строки и столбцы содержат значения, а смысл каждого столбца живёт в строке заголовков, которую читают люди. Формат отлично подходит для аналитиков и ужасен для системной интеграции. Сервисы SOAP, шлюзы EDI, регуляторные порталы, банковские интерфейсы и медицинские сообщения HL7 не разбирают XLSX. Они ожидают XML с явными именами элементов, определённой вложенностью и предсказуемыми правилами экранирования.
XML — иерархичный и самоописывающий. Каждое значение несёт имя элемента, документ валидируется по схеме, и любая платформа — Linux, Java, .NET, мейнфреймы IBM — может разобрать его без проприетарных библиотек. Когда данным Excel нужно попасть в этот мир, они должны сначала стать XML. Total Excel Converter X пишет валидный XML, где каждая строка Excel становится узлом записи, строка заголовков предоставляет имена полей, а специальные символы экранируются, чтобы вывод чисто проходил через любой XML-парсер.
| Excel (XLS/XLSX) | XML | |
|---|---|---|
| Форма | Двумерная сетка | Иерархическое дерево |
| Имена полей | Неявные (строка заголовков) | Явные на каждой записи |
| Валидация | Нет на уровне файла | Схема (XSD, DTD) |
| Потребители | Люди, Excel-совместимые инструменты | SOAP, EDI, ERP, HL7, регуляторы |
| Кросс-платформенность | Лучше всего на Windows + Office | Универсальный — каждый язык и ОС |
Скачайте установщик по ссылке выше и запустите его на вашем сервере или рабочей станции Windows. Установка занимает меньше минуты. Установка Microsoft Excel не требуется — конвертер читает XLS и XLSX напрямую с собственным парсером, включая формулы, стили и многолистовые книги.
Откройте cmd.exe или PowerShell. Исполняемый файл конвертера — XLSConverter.exe, расположенный в папке установки (обычно C:\Program Files\CoolUtils\TotalExcelConverterX\). Добавьте его в системную переменную PATH или используйте полный путь в командах.
Простейшая команда конвертирует все Excel-файлы в папке в XML:
XLSConverter.exe C:\Sheets\*.xlsx C:\Output\ -c XML
Эта команда обрабатывает каждый файл .xlsx в папке C:\Sheets\ и сохраняет полученные XML-файлы в C:\Output\. Каждая книга создаёт один XML-файл с тем же базовым именем. Каждая строка в исходнике становится элементом <Row>, а каждая ячейка становится дочерним элементом, названным по соответствующему заголовку столбца.
Управляйте выходным XML с помощью дополнительных флагов:
XLSConverter.exe C:\Sheets\*.xlsx C:\Output\ -c XML -Encoding UTF-8 -FirstRowAsHeader true -log C:\Logs\xls2xml.log
-Encoding UTF-8 — задать кодировку XML (UTF-8, UTF-16, Windows-1252, ISO-8859-1)-FirstRowAsHeader true — использовать строку 1 как имена элементов вместо общих Column1, Column2-Sheet "Invoices" — конвертировать только указанный рабочий лист, а не каждый-log C:\Logs\xls2xml.log — записать лог конвертации для проверкиСохраните команду в файле .bat и запланируйте его через Планировщик задач Windows:
@echo off "C:\Program Files\CoolUtils\TotalExcelConverterX\XLSConverter.exe" C:\Incoming\*.xlsx C:\Archive\XML\ -c XML -Encoding UTF-8 -FirstRowAsHeader true -log C:\Logs\xls2xml.log
Эта команда запускает конвертацию каждую ночь (или с любым заданным интервалом) и записывает лог-файл, чтобы вы могли проверить результаты. Складывайте новые книги в C:\Incoming\ в течение дня, и интеграционный пайплайн их подберёт автоматически.
Total Excel Converter X включает полный интерфейс ActiveX. Вы можете вызывать конвертер из любой COM-совместимой среды — .NET, VBScript, PHP, Python, Ruby или ASP. Это позволяет встроить конвертацию Excel в XML в ваше веб-приложение, интеграционный брокер или рабочий процесс обработки документов без запуска командной строки.
Пример (C#/.NET):
XLSConverterX Cnv = new XLSConverterX();
Cnv.Convert("C:\\Sheets\\invoices.xlsx", "C:\\Output\\invoices.xml", "-c XML -Encoding UTF-8 -FirstRowAsHeader true -log c:\\Logs\\xls.log");
Пример (PHP):
$c = new COM("XLSConverter.XLSConverterX");
$c->convert("C:\\Sheets\\invoices.xlsx", "C:\\Output\\invoices.xml", "-c XML -Encoding UTF-8 -FirstRowAsHeader true -log c:\\Logs\\xls.log");
Тот же вызов работает из ASP.NET, VBScript, Python, Ruby, Perl и JavaScript (Windows Script Host). Ваш интеграционный слой может принимать загруженные Excel-файлы, конвертировать их в XML в памяти и пересылать XML-полезную нагрузку прямо в SOAP-эндпойнт или очередь ERP.
| Функция | Онлайн-конвертеры | Total Excel Converter X |
|---|---|---|
| Пакетная обработка | По одному файлу за раз | Неограниченное количество файлов за раз |
| Конфиденциальность данных | Книги загружаются на сторонний сервер | Файлы не покидают ваш компьютер |
| Управление кодировкой | Только UTF-8, часто сломано | UTF-8, UTF-16, Windows-1252, ISO-8859-1 |
| Экранирование спецсимволов | Непоследовательно, часто невалидный XML | Полное экранирование &, <, >, ", управляющих символов |
| Многолистовые книги | Только первый лист | Все листы или указанный лист |
| Автоматизация | Только вручную | Командная строка, .bat, Планировщик задач, ActiveX |
| Серверное развёртывание | Невозможно | Разработан для серверов, GUI не требуется |
| Требуется установленный Excel | Не применимо | Нет |
| Требуется интернет | Да | Нет |
Конвертер читает XLS и XLSX напрямую с собственным парсером. Вам не нужны Microsoft Office, LibreOffice или какое-либо табличное приложение, установленное на сервере. Это позволяет избежать расходов на лицензии и хорошо известной нестабильности автоматизации Excel в автоматических сценариях.
Total Excel Converter X разработан для автоматической работы. Никаких окон GUI, диалоговых окон, запросов подтверждения. Он работает тихо из командной строки или как часть сервиса — именно то, что нужно интеграционному серверу в продакшене.
Вывод — правильно сформированный XML. Амперсанды становятся &, угловые скобки становятся < и >, кавычки внутри атрибутов экранируются, а случайные управляющие символы удаляются. XML проходит через любой стандартизированный парсер, не давясь именем клиента, в котором случайно оказался амперсанд.
Тот же инструмент командной строки конвертирует Excel в PDF, DOC, HTML, CSV, JSON, ODS, TXT и другие форматы. Одна установка покрывает все ваши потребности в конвертации таблиц. Замените -c XML на -c JSON, и вы получите JSON на выходе с теми же функциями пакетной обработки и автоматизации.
(30 дней, без email и кредитной карты)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"Наш партнёр по доставке принимает заказы только в виде XML через SOAP, но операционная команда формирует их в Excel. Total Excel Converter X запускается как .bat-задача на сервере интеграции и превращает ежедневный заказной файл Excel в XML менее чем за три секунды. Экранирование корректно обрабатывает специальные символы в именах клиентов, на которых ломался наш предыдущий самописный парсер. Готовая замена самодельному VBA-скрипту, который никто не хотел поддерживать."
Andreas Vogt Integration Engineer, Logistik AG
"Мы обмениваемся EDI-документами примерно с сорока розничными партнёрами, и треть из них требует XML-конвертов вместо X12 или EDIFACT. Конвертер стоит между нашим заказным столом на основе Excel и EDI-шлюзом. Привязка по строке заголовков означает, что XML-схема каждого партнёра выстраивается по именам столбцов, которые мы уже используем. Кодировка задаётся для каждого партнёра через командную строку. Никаких сюрпризов в продакшене."
Priya Subramanian EDI Specialist, Wholesale Distribution
"Мы еженедельно подаём регуляторные отчёты в центральный банк в формате XML. Исходные данные сверяются в Excel финансовой командой и затем должны превратиться в строго закодированный XML-пакет. Вывод в UTF-8 и чистое экранирование амперсандов проходят валидатор регулятора с первой попытки. Мы всё ещё пост-обрабатываем вывод через XSLT, чтобы он точно соответствовал целевой схеме, но сам этап конвертации надёжен и быстр."
Marc Lefevre Regulatory Reporting Lead, Banque Mutuelle
XLSConverter.exe C:\Sheets\*.xlsx C:\Output\ -c XML. Она конвертирует каждую книгу Excel в исходной папке в XML. Добавьте флаги -Encoding UTF-8, -FirstRowAsHeader true или -log для управления структурой и кодировкой вывода.-FirstRowAsHeader true, и конвертер использует каждый заголовок столбца как имя элемента для этого поля, поэтому столбец CustomerName выдаст элементы <CustomerName>. Без этого флага конвертер откатывается к общим тегам Column1, Column2. Узлы строк по умолчанию имеют тег <Row>; это даёт предсказуемую регулярную структуру, которая чисто отображается на большинство потребляющих схем.-Encoding. UTF-8 — безопасный выбор по умолчанию для SOAP, EDI и большинства современных интеграций. Используйте UTF-16, когда дальнейшая система специально его требует, или кодовую страницу Windows для питания устаревшего партнёра, ожидающего однобайтовый XML.&, угловые скобки становятся < и >, двойные кавычки внутри значений атрибутов становятся ", а случайные управляющие символы, которые могли бы сломать парсер XML 1.0, удаляются. Вывод проходит валидацию любым стандартизированным парсером без ручной очистки.-Sheet "Invoices", чтобы конвертировать только один указанный лист, или -Sheet 1, чтобы выбрать по нулевому индексу. Скрытые листы и листы диаграмм пропускаются.XLSConverter.XLSConverterX). Вы можете вызывать его из .NET, PHP, Python, VBScript, ASP, Ruby, Perl и любой другой COM-совместимой среды для конвертации Excel-загрузок в XML в реальном времени и пересылки результата в SOAP-эндпойнт или очередь сообщений.
string src = @"C:\test\Source.xlsx";
string dest = @"C:\test\Dest.pdf";
var cnv = new ExcelConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\Excel.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\ExcelConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.xlsx";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{srcPath} {outPath}";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
int sleepCounter = 10;
while(!File.Exists(outPath) && sleepCounter > 0)
{
System.Threading.Thread.Sleep(1000);
sbLogs.AppendLine("sleep...");
sleepCounter--;
}
if (File.Exists(outPath))
sbLogs.AppendLine("Conversion complete successfully.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("ExcelConverter.ExcelConverterX")
C.Convert "c:\test\source.xlsx", "c:\test\dest.pdf", "-cPDF -log c:\test\Excel.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("ExcelConverter.ExcelConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.xlsx", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
$src="C:\\test\\test.xlsx";
$dest="C:\\test\\test.csv";
if (file_exists($dest)) unlink($dest);
$c= new COM("ExcelConverter.ExcelConverterX");
$c->convert($src,$dest, "-c csv -log c:\\test\\xls.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('ExcelConverter.ExcelConverterX')
src = "C:\\test\\test.xlsx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-c PDF -log c:\\test\\Excel.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("ExcelConverter.ExcelConverterX")
src = "C:\\test\\test.xlsx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-c PDF -log c:\\test\\Excel.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('ExcelConverter.ExcelConverterX');
c.Convert('c:\test\source.xlsx', 'c:\test\dest.pdf', '-cPDF -log c:\test\Excel.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("ExcelConverter.ExcelConverterX");
c.Convert("C:\\test\\source.xlsx", "C:\\test\\dest.pdf", "-c PDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.xlsx"; my $dest = "C:\\test\\test.csv"; my $c = CreateObject Win32::OLE 'ExcelConverter.ExcelConverterX'; $c->convert($src, $dest, "-c csv -log c:\\test\\xls.log"); print $c->ErrorMessage if -e $dest;
Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.