通过Web服务器批量转换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 是一款服务器端 SDK,可将 XLSX、XLS、XLSM、ODS、CSV 和 XML 电子表格转换为 PDF、JSON、XML、HTML、DBF、SQL 以及其他 15 种以上的格式 — 无需在服务器上安装 Microsoft Excel 或任何 Office 运行时。它以无界面方式运行:没有 GUI、没有对话框、没有弹窗。Total Excel Converter X 同时提供 命令行二进制文件和 ActiveX/COM 接口,因此可以无缝集成到 ASP、PHP、.NET、Python、Ruby、Java 以及任何其他兼容 COM 的后端中。完整支持的源格式列表如下:
-list) 进行无人值守处理。该程序直接读取工作簿 — 无需 Excel 自动化、无需 Open XML SDK 依赖,也无需照看无界面 Office 实例。
高速转换和批量处理让整个流程简单高效,无需等待。免费试用(30 天试用期,无任何限制),你会发现它物有所值。
当前支持的部分文件格式转换:
|
|
|
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;
"两年前我们用 Total Excel Converter X 替换了一个基于 Excel-Interop 的 COM 自动化脚本。原来的 Interop 流水线泄漏句柄、导致应用程序池崩溃,而且每台转换虚拟机都需要完整安装 Office。现在那些虚拟机只在队列后面运行 ExcelConverterX.exe。每个工作簿的转换延迟从大约 12 秒降到了 1.5 秒,Office 授权费用也省下来了。与我们 worker 的 .NET 集成只花了半天时间。"
Mateusz K.
Senior Backend Developer at a fintech
"我们的客户上传各种格式的工资单电子表格:供应商模板用的是 XLS,现代 XLSX 带宏,偶尔还有 LibreOffice 用户提交的 ODS。Total Excel Converter X 把所有内容统一规范成单一的归档 PDF 配置文件,采用 AES-256 加密,并加盖我们合规所需的权限标志。-list 队列文件加上 -verbosity detail 日志直接对接到我们的日志聚合系统。在 Windows Server Core 上无界面运行,无需 Office,毫无意外。"
Sofia L.
DevOps Engineer at a payroll SaaS
"我们将 XLSX 转 JSON 作为服务提供给 ETL 客户。Total Excel Converter X 就是该端点背后的引擎。-FirstRowIsHeader 加上直接的 JSON 输出意味着我们不必编写自己的解析器或维护单独的 CSV 转 JSON 步骤。五年来日均数千次转换的吞吐量,没有一次故障可以归咎于这款转换器。CLI 稳定可靠,每次运行的输出在二进制层面完全一致。"
Hamid Y.
CTO at an ETL platform vendor
"我们将 Total Excel Converter X 在免版税许可证下捆绑到了我们的报表产品中。一次性的项目费用只是 Aspose-Cells 按开发者订阅价格的一小部分。我们的安装程序发布并注册 ActiveX,我们的应用直接调用它,终端用户只看到我们自己的 UI。32 位 ActiveX 限制让我们多花了几天时间重做流水线,但当我们询问解决方案时支持团队响应迅速。"
Britt N.
Independent Software Vendor
"经纪人上传带嵌入照片和合并单元格的 XLSX 房源导出文件,我们需要将其转换为干净的 PDF 用于公开门户。Total Excel Converter X 在处理渲染细节(合并单元格、冻结窗格、命名区域)方面比我们评估过的开源库都更出色。使用 -combine -sort name 将十个工作簿合并为一份月度 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 从标准分隔符(Tab、Space、Semicolon、Comma)中选择,或使用 -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
月末报告通常意味着将十个或二十个工作簿拼接成一份交付物。-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
用 Copy、Modify、Annotation、FormFill、HighResPrint 的任意组合替换 Print,以准确授予您想要的权限。如果源工作簿本身受密码保护,请预先添加 -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。或者,可以从任何进程、调度程序或 shell 脚本调用 ExcelConverterX.exe 命令行二进制文件。还提供通过 ConvertToStream 直接进行 PDF 流式传输,适用于 ASP/PHP Web 响应。-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 在输出端镜像文件夹树,而不是将所有内容平铺到一个目录中。