웹 서버를 통해 XLS, XLSX, ODS, XML 스프레드시트를 일괄 변환합니다.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Excel Converter X는 XLSX, XLS, XLSM, ODS, CSV, XML 스프레드시트를 PDF, JSON, XML, HTML, DBF, SQL을 비롯한 15가지 이상의 형식으로 변환하는 서버용 SDK입니다 — 서버에 Microsoft Excel이나 Office 런타임을 설치하지 않고도 작동합니다. 헤드리스로 실행됩니다: GUI 없음, 대화상자 없음, 팝업 없음. Total Excel Converter X는 명령줄 바이너리와 ActiveX/COM 인터페이스를 함께 제공하므로 ASP, PHP, .NET, Python, Ruby, Java 및 COM을 지원하는 모든 백엔드에 손쉽게 통합됩니다. 지원되는 입력 형식 전체 목록:
-list) 처리를 지원합니다.이 프로그램은 워크북을 직접 읽습니다 — Excel 자동화 없이, Open XML SDK 의존성 없이, 관리해야 할 헤드리스 Office 인스턴스도 없이.
높은 변환 속도와 일괄 변환으로 단순하고 지루하지 않은 작업이 가능합니다. 무료로 사용해 보세요(30일 평가판, 제한 없음). 그만한 가치가 있다는 것을 직접 확인하실 수 있습니다.
현재 지원되는 파일 형식 변환 일부:
|
|
|
LLM 에이전트(Claude, ChatGPT, Cursor, Cline)와 검색 파이프라인(LangChain, LlamaIndex, Haystack)은 XLSX를 읽지 못합니다. 텍스트를 읽습니다. Total Excel Converter X는 스프레드시트를 구조화된 frontmatter와 선택적 Docling 호환 사이드카가 포함된 GitHub-Flavored Markdown으로 작성합니다. 그 결과 워크북이 계층, 헤더, 수식, 단위를 그대로 유지한 채로 벡터 스토어에 들어갑니다 — 병합된 셀이 사라진 평면 문자열이 아닙니다.
Markdown 출력을 대상으로 했을 때 얻는 것:
source_file, format(MIME), generator, created, 시트 수, 행/열 수, 감지된 언어, 출처 확인을 위한 바이너리 해시를 담습니다.
# / ## / ### Markdown 헤딩으로 매핑되므로 RAG 스플리터가 표 중간이 아닌 의미적 경계에서 자릅니다.
.docling.json 사이드카 — 단위(EUR, pcs, kWh, %)가 포함된 타입이 지정된 열, 원본 좌표(of:=[.C5]*[.D5])와 함께 정규화된 수식(=qty*unit_price), 그리고 스플리터용 chunks_hint를 담습니다.
UnstructuredMarkdownLoader / MarkdownReader가 이를 인식합니다.
이것이 우리가 부르는 CoolUtils RAG Adapter입니다 — 모든 Total Converter X 제품이 공유하는 통합 Markdown 계약입니다. 전체 사양, 샘플 .md + .docling.json, 통합 스니펫은 Coolutils Converter X — RAG Adapter 페이지에 있습니다.
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;
"2년 전에 Excel-Interop COM 자동화 스크립트를 Total Excel Converter X로 교체했습니다. Interop 파이프라인은 핸들 누수가 있고, 앱 풀이 충돌했으며, 모든 변환 VM에 Office 전체 설치가 필요했습니다. 이제 그 VM들은 큐 뒤에서 ExcelConverterX.exe만 실행합니다. 워크북당 변환 지연 시간이 약 12초에서 1.5초로 떨어졌고, Office 라이선스 항목도 없어졌습니다. 우리 워커와의 .NET 통합은 반나절이면 끝났습니다."
Mateusz K.
Senior Backend Developer at a fintech
"고객들은 온갖 형태의 급여 스프레드시트를 업로드합니다: 벤더의 XLS 템플릿, 매크로가 포함된 최신 XLSX, 가끔 LibreOffice 사용자가 보내는 ODS. Total Excel Converter X는 모든 것을 AES-256 암호화가 적용된 단일 보관용 PDF 프로파일로 정규화하고, 컴플라이언스에 필요한 권한별 플래그를 새깁니다. -list 큐 파일과 -verbosity detail 로그가 우리 로그 집계기로 바로 흘러 들어갑니다. Windows Server Core에서 헤드리스로, Office 없이, 예상 밖의 일도 없이 잘 돌아갑니다."
Sofia L.
DevOps Engineer at a payroll SaaS
"우리는 ETL 고객들에게 XLSX-to-JSON을 서비스로 제공합니다. Total Excel Converter X가 그 엔드포인트의 엔진입니다. -FirstRowIsHeader와 직접 JSON 출력 덕분에 자체 파서를 작성하거나 별도의 CSV-to-JSON 단계를 유지할 필요가 없었습니다. 5년간 하루 수천 건의 변환을 처리했지만, 변환기 탓으로 돌릴 만한 실패는 없었습니다. CLI는 안정적이며 출력은 실행할 때마다 비트 단위로 동일합니다."
Hamid Y.
CTO at an ETL platform vendor
"Royalty-Free License로 Total Excel Converter X를 우리 보고 제품에 번들했습니다. 프로젝트당 일회성 비용은 Aspose-Cells가 개발자별 구독으로 요구하던 금액의 일부에 불과했습니다. 우리 설치 프로그램이 ActiveX를 배포하고 등록하며, 우리 앱이 직접 호출하고, 최종 사용자는 우리 UI만 봅니다. 32비트 ActiveX 제한 때문에 파이프라인 재작업에 며칠이 들었지만, 우회 방법을 문의했을 때 지원팀의 응답이 빨랐습니다."
Britt N.
Independent Software Vendor
"중개인들이 사진과 병합된 셀이 포함된 XLSX 매물 목록을 업로드하면, 우리는 공개 포털용 깔끔한 PDF가 필요합니다. Total Excel Converter X는 우리가 평가했던 오픈소스 라이브러리들보다 렌더링 특이사항(병합된 셀, 고정 창, 명명된 범위)을 더 잘 처리합니다. -combine -sort name으로 워크북 10개를 한 달치 PDF 하나로 결합하는 기능은 매 릴리스 주기마다 사용하는 기능입니다."
Daichi T.
Lead .NET Developer at a real-estate platform
Developers and IT teams that convert Excel files to PDF, DOC, CSV, and more on servers
Add Excel-to-PDF conversion to your web app via ActiveX
Web developers integrate Total Excel ConverterX into ASP, PHP, or .NET applications so users can upload Excel files and receive converted PDF, HTML, or CSV output instantly. The converter runs silently on the server with no GUI, supporting multiple simultaneous users without interruption.
Auto-convert Excel exports from business systems
Enterprise IT teams schedule Total Excel ConverterX to process nightly XLS and XLSX exports from ERP, CRM, and BI platforms. Convert financial reports to protected PDF, extract data to CSV for databases, or transform spreadsheets to HTML for internal dashboards — all unattended via command line.
Auto-convert new Excel files as they arrive in folders
Paired with Total Folder Monitor, Total Excel ConverterX watches designated folders and automatically converts new XLS files as they appear. Incoming spreadsheets from partner uploads, FTP drops, or automated exports are converted to the required format and routed to the right destination hands-free.
Serve Excel conversion to all users on your local network
Organizations deploy Total Excel ConverterX as a shared service on the company network. Employees from finance, sales, and operations submit Excel files for conversion to PDF, DOC, or CSV through a centralized server — no need to install desktop converters on every workstation.
Embed spreadsheet conversion into your own software
Software vendors embed Total Excel ConverterX into their products to add Excel export capabilities. The ActiveX interface provides conversion functions through simple API calls — convert XLS, XLSX, ODS, and DBF files to PDF, HTML, CSV, SQL, LaTeX, and 15+ other formats from within any COM-compatible application.
Total Excel ConverterX에는 ExcelConverterX.exe라는 콘솔 바이너리가 포함되어 있어 스크립트, 예약 작업, CI 러너 또는 백엔드 서비스에서 실행할 수 있습니다. 플래그 세트는 GUI ExcelConverter.exe와 일치합니다. 전체 참조는 명령줄 문서를 참조하세요. 아래의 예제는 SDK 고객들이 가장 자주 묻는 사례를 다룹니다.
가장 단순한 호출 — 하나의 소스 파일, 하나의 출력, 하나의 대상 형식.
ExcelConverterX.exe "C:\reports\Q4-financials.xlsx" "C:\out\Q4-financials.pdf" -cPDF
폴더 내 모든 워크북을 처리하고 형제 출력 디렉터리에 PDF를 떨어뜨립니다. 다른 소스 형식을 선택하려면 마스크를 *.xls, *.ods 또는 *.csv로 바꾸세요.
ExcelConverterX.exe "C:\reports\*.xlsx" "C:\out\" -cPDF
대부분의 데이터 파이프라인에는 CSV가 필요하지만, 일반 쉼표인 경우는 거의 없습니다. -td를 사용하여 표준 구분 기호(탭, 공백, 세미콜론, 쉼표)에서 선택하거나 -td Other -tdo로 다른 것을 설정하세요 — 여기서는 파이프 문자입니다.
ExcelConverterX.exe "C:\reports\*.xlsx" "C:\out\" -cCSV -td Other -tdo "|" -FirstRowIsHeader -UseQuote
-FirstRowIsHeader는 변환기에 1행을 열 이름으로 처리하도록 지시합니다. -UseQuote는 텍스트 필드를 따옴표로 감싸서 임베드된 구분 기호가 구문 분석을 깨뜨리지 않도록 합니다.
워크북 데이터를 REST 엔드포인트나 ETL 작업에 공급하려면 CSV를 거치지 않고 구조화된 형식으로 직접 렌더링하세요.
ExcelConverterX.exe "C:\reports\*.xlsx" "C:\out\" -cJSON -FirstRowIsHeader
ExcelConverterX.exe "C:\reports\*.xlsx" "C:\out\" -cXML -FirstRowIsHeader
많은 회계 및 ERP 도구가 여전히 DBF 테이블을 사용합니다. 변환기는 워크북에서 직접 유효한 dBase 파일을 작성합니다.
ExcelConverterX.exe "C:\reports\customers.xlsx" "C:\out\customers.dbf" -cDBF -FirstRowIsHeader
기본적으로 모든 표시되는 시트는 자체 출력 파일이 됩니다. -sheets는 사용자가 지정한 시트만 선택합니다. -cs는 이를 단일 문서로 결합합니다. -ExportAll은 숨겨진 시트를 포함합니다.
ExcelConverterX.exe "C:\reports\workbook.xlsx" "C:\out\summary.pdf" -cPDF -sheets "Summary;Q4;Forecast" -cs
월말 보고는 종종 10~20개의 워크북을 하나의 산출물로 묶는 것을 의미합니다. -combine은 소스 파일 순서대로 하나의 PDF로 병합합니다. -sort name은 해당 순서를 제어합니다.
ExcelConverterX.exe "C:\reports\monthly\*.xlsx" "C:\out\monthly-pack.pdf" -cPDF -combine -sort name
워크북이 중첩된 클라이언트 폴더에 있을 때, -Recurse는 하위 디렉터리를 탐색하고 -kfs는 모든 것을 하나의 버킷에 평평하게 만드는 대신 출력 측에서 동일한 트리를 다시 만듭니다.
ExcelConverterX.exe "C:\clients\*.xlsx" "C:\out\clients\" -cPDF -Recurse -kfs
외부 수신자에게 재무 자료를 보낼 때의 표준입니다: 소유자 비밀번호로 편집/인쇄 권한을 잠그고, 사용자 비밀번호로 파일 열기를 제어하며, AES-256 암호화로 견고하게 유지합니다.
ExcelConverterX.exe "C:\reports\*.xlsx" "C:\out\" -cPDF -mp "owner-pwd" -up "user-pwd" -perm Print -EncryptStrength es256AES
Print를 Copy, Modify, Annotation, FormFill, HighResPrint의 조합으로 바꾸어 원하는 권한을 정확히 부여하세요. 소스 워크북 자체가 비밀번호로 보호된 경우 미리 -Pass "wb-pwd"를 추가하세요.
워커가 큐 파일을 작성하고 변환기가 이를 사용하는 경우, 명령줄 자체에 파일 경로를 인코딩하고 싶지 않을 것입니다. -list는 텍스트 파일에서 파일 마스크(한 줄에 하나)를 읽습니다. -verbosity detail은 파일당 한 줄을 작성합니다. -logmode append는 실행 간에 기록을 유지합니다.
ExcelConverterX.exe -list "C:\queues\batch.txt" "C:\out\" -cPDF -log "C:\logs\xlsxconv.log" -verbosity detail -logmode append
new COM("ExcelConverter.ExcelConverterX"), .NET에서 new ExcelConverterX(), Python에서 win32com.client.Dispatch, Ruby에서 WIN32OLE.new. 또는 ExcelConverterX.exe 명령줄 바이너리를 어떤 프로세스, 스케줄러, 셸 스크립트에서도 호출할 수 있습니다. ASP/PHP 웹 응답을 위한 ConvertToStream을 통한 직접 PDF 스트리밍도 가능합니다.-mp "owner-pwd"로, 파일 열기를 제어하는 사용자 비밀번호는 -up "user-pwd"로 설정하세요. -perm 플래그는 Print, HighResPrint, Copy, Modify, Annotation, FormFill의 임의 조합을 받습니다. 암호화 강도는 -EncryptStrength es256AES로 제어합니다. 원본 워크북 자체가 비밀번호로 보호되어 있다면 변환기가 열 수 있도록 미리 -Pass "workbook-pwd"를 전달하세요.-sheets "Summary;Q4;Forecast"로 워크북에서 이름이 지정된 시트를 선택하세요. -cs를 추가하면 선택한 시트를 단일 출력 문서로 결합하고, -ExportAll은 숨겨진 시트도 포함합니다. 여러 워크북을 원본 파일 순서대로 단일 PDF로 병합하려면 폴더 마스크에 대해 -combine -sort name을 실행하세요. -Recurse는 하위 디렉토리를 탐색하고, -kfs는 모든 것을 하나의 버킷으로 평면화하는 대신 출력 측에 폴더 트리를 그대로 미러링합니다..md를 대상으로 하면 변환기가 GitHub-Flavored Markdown을 작성합니다: 각 시트가 다중 행 헤더, 병합된 셀, 이중 언어 열 캡션이 보존된 GFM 표가 됩니다. YAML frontmatter 블록은 source_file, MIME format, 시트 수, 행/열 수, 감지된 언어, generator, 그리고 출처 확인을 위한 바이너리 해시를 담습니다. 워크북 계층(워크북 → 시트 → 명명된 범위 → 헤더 밴드)이 # / ## / ### Markdown 헤딩으로 매핑되므로 RAG 스플리터가 표 중간이 아닌 의미적 경계에서 자릅니다. 이는 CoolUtils RAG Adapter의 일부입니다 — 동일한 Markdown 계약을 모든 Total Converter X 제품이 공유합니다.of:=[.C5]*[.D5])와 함께 정규화된 수식(=qty*unit_price), 시트별 경계 사각형, 출처 확인을 위한 binary_hash, 그리고 스플리터가 읽을 수 있는 chunks_hint 배열. 명령줄에서 -Docling으로 활성화합니다. JSON은 Markdown과 독립적입니다 — 둘 다 인덱스에 입력하거나 건너뛰고 .md만 사용할 수도 있습니다..md 파일은 YAML frontmatter 블록이 있는 일반 GFM이므로 LangChain의 UnstructuredMarkdownLoader, LlamaIndex의 MarkdownReader, Haystack의 MarkdownToDocument, Claude Code의 MCP 파일 도구가 직접 읽습니다. Claude, ChatGPT 또는 채팅 UI에서는 Markdown을 그대로 컨텍스트에 붙여넣을 수 있습니다 — 표가 렌더링되고, 헤딩이 청크가 어느 섹션에서 왔는지 보여주며, frontmatter가 모델에게 소스 파일명과 언어 힌트를 제공합니다. 선택적 .docling.json 사이드카는 Docling을 인식하는 수집기나 타입이 지정된 열을 원하는 모든 커스텀 로더가 소비합니다.ExcelConverterX.exe "C:\reports\Q4.xlsx" "C:\out\" -cMD -Docling. -cMD는 Markdown 출력을 선택하고, -Docling은 추가로 .docling.json 사이드카를 작성합니다. 범위를 지정하려면 -sheets "Summary;Q4;Forecast"를, 하위 디렉터리를 탐색하려면 -Recurse를, 무인 파이프라인에는 -list "queue.txt"를 추가하세요. COM에서: obj.Convert("Q4.xlsx", "Q4.md", "-cMD -Docling"). 결과 Markdown은 모든 벡터 스토어에서 청크화, 임베딩, 인덱싱할 준비가 되어 있습니다.무료 평가판을 다운로드하고 몇 분 만에 파일을 변환하세요.
신용카드나 이메일이 필요하지 않습니다.