SOAP 웹 서비스, EDI 파트너, 규제 제출 또는 ERP 통합에 공급해야 하는 Excel 워크북이 가득 들어 있는 폴더가 있고 — 수신 시스템은 XLSX가 아닌 XML을 사용합니다. 각 파일을 Excel에서 열고 손으로 XML로 저장하는 것은 두 번째 워크북을 지나면 작동을 멈추며, Excel의 내장 XML 내보내기는 다운스트림 시스템이 실제로 확인하는 스키마 요구 사항을 무시합니다. Total Excel Converter X는 GUI 없이, Microsoft Excel 설치 없이 명령줄에서 XLS 및 XLSX 파일을 잘 형식화된 XML로 일괄 변환합니다. Windows 서버에 설치하고 스크립트나 ActiveX를 통해 호출하면 무인으로 실행됩니다.
*.xlsx)를 전달하면 변환기가 한 번의 실행으로 일치하는 모든 워크북을 처리합니다
(30일, 이메일 불필요)
(서버 라이선스, 영구)
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는 모든 Excel 행이 레코드 노드가 되고, 헤더 행이 필드 이름을 제공하며, 특수 문자가 이스케이프되어 출력이 모든 XML 파서를 깨끗하게 통과하는 유효한 XML을 작성합니다.
| Excel (XLS/XLSX) | XML | |
|---|---|---|
| 모양 | 2차원 그리드 | 계층적 트리 |
| 필드 이름 | 암묵적(헤더 행) | 모든 레코드에 명시적 |
| 유효성 검사 | 파일 수준에서는 없음 | 스키마(XSD, DTD) |
| 소비자 | 사람, Excel 인식 도구 | SOAP, EDI, ERP, HL7, 규제 기관 |
| 크로스 플랫폼 | Windows + Office에서 가장 좋음 | 보편적 — 모든 언어와 OS |
위의 링크에서 설치 프로그램을 다운로드하고 Windows 서버 또는 워크스테이션에서 실행합니다. 설치는 1분 이내에 완료됩니다. Microsoft Excel 설치는 필요하지 않습니다 — 변환기는 자체 파서를 사용하여 수식, 스타일, 다중 시트 워크북을 포함한 XLS와 XLSX를 직접 읽습니다.
cmd.exe 또는 PowerShell을 엽니다. 변환기 실행 파일은 설치 폴더(일반적으로 C:\Program Files\CoolUtils\TotalExcelConverterX\)에 있는 XLSConverter.exe입니다. 시스템 PATH에 추가하거나 명령에서 전체 경로를 사용하십시오.
가장 간단한 명령은 폴더의 모든 Excel 파일을 XML로 변환합니다:
XLSConverter.exe C:\Sheets\*.xlsx C:\Output\ -c XML
이 명령은 C:\Sheets\의 모든 .xlsx 파일을 처리하고 결과 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 — 일반 Column1, Column2 대신 1행을 요소 이름으로 사용-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 인터페이스가 포함되어 있습니다. .NET, VBScript, PHP, Python, Ruby, ASP 등 모든 COM 호환 환경에서 변환기를 호출할 수 있습니다. 이를 통해 명령줄 프로세스를 별도로 실행하지 않고도 자체 웹 애플리케이션, 통합 브로커 또는 문서 워크플로에 Excel-to-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 |
|---|---|---|
| 일괄 처리 | 한 번에 한 파일 | 배치당 무제한 파일 |
| 데이터 프라이버시 | 워크북이 제3자 서버에 업로드됨 | 파일이 사용자 컴퓨터를 떠나지 않음 |
| 인코딩 제어 | 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일, 이메일이나 신용카드 불필요)
(서버 라이선스, 영구)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"우리 배송 파트너는 SOAP를 통한 XML로만 구매 주문을 수락하지만, 운영 팀은 이를 Excel에서 작성합니다. Total Excel Converter X는 통합 서버에서 예약된 .bat으로 실행되며 일일 주문 워크북을 3초 이내에 XML로 변환합니다. 이스케이프는 이전 자체 제작 파서를 깨뜨린 고객 이름의 특수 문자를 처리합니다. 아무도 유지하고 싶어 하지 않던 자체 제작 VBA 스크립트의 드롭인 교체품입니다."
Andreas Vogt Integration Engineer, Logistik AG
"약 40개의 소매 파트너와 EDI 문서를 거래하며, 그중 3분의 1은 X12 또는 EDIFACT 대신 XML 봉투를 원합니다. 변환기는 스프레드시트 기반 주문 데스크와 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을 사용하거나, 단일 바이트 XML을 기대하는 레거시 파트너에게 공급할 때 Windows 코드 페이지를 사용하세요.&가 되고, 꺾쇠 괄호는 <와 >가 되며, 속성 값 내부의 큰따옴표는 "가 되고, XML 1.0 파서를 깨뜨릴 수 있는 길 잃은 제어 문자는 제거됩니다. 출력은 수동 정리 없이 모든 표준 호환 파서에서 검증됩니다.-Sheet "Invoices"를 전달하거나, 0 기반 인덱스로 선택하려면 -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;
무료 평가판을 다운로드하고 몇 분 만에 파일을 변환하세요.
신용카드나 이메일이 필요하지 않습니다.