Download Total Excel Converter X and start automating XLSX-to-PDF conversion on your server today.
(includes 30 day FREE trial)
(server license)
XLSX is an editable spreadsheet format. Layout depends on installed fonts, Excel version, and printer driver — the same file looks different on different machines. Recipients can change cell values, break formulas, or see data you did not intend to share.
PDF freezes the page layout. Fonts are embedded, geometry is locked, and every viewer renders the same result. PDF encryption controls who can view, print, or copy the contents.
On a server, the difference matters even more. There is no monitor, no mouse, and no Excel installation. A command-line converter reads the XLSX file with its own parser, applies your formatting rules, and writes a finished PDF — no human intervention, no Microsoft Office dependency.
| Feature | XLSX | |
|---|---|---|
| Editability | Fully editable | View and print only |
| Layout consistency | Varies by system | Identical everywhere |
| Font embedding | No | Yes |
| Password protection | Limited | Full (view, print, copy control) |
| Viewer required | Excel or compatible app | Any PDF reader (free) |
| Server-friendly | Needs Office or parser | Static file, no special software |
ExcelConverterX.exe C:\Data\report.xlsx C:\Output\report.pdf -cPDFExcelConverterX.exe C:\Data\*.xlsx C:\Output\ -cPDF -PageSize:A4 -LandscapeExcelConverterX.exe C:\Data\*.xlsx C:\Output\ -cPDF -OwnerPassword:secret -UserPassword:open123 -log C:\Logs\excel.log
All error messages go to the log file. The converter exits silently, so your scripts and scheduled tasks run without interruption.
Total Excel Converter X registers a COM object (ExcelConverter.ExcelConverterX) that you can call from any language that supports COM/ActiveX. This lets you convert XLSX to PDF from inside your web application, ERP system, or data pipeline without shelling out to a process.
.NET (C#):
ExcelConverterX cnv = new ExcelConverterX();
cnv.Convert(@"C:\Data\report.xlsx", @"C:\Output\report.pdf",
"-cPDF -PageSize:A4 -log C:\Logs\excel.log");PHP:
$c = new COM("ExcelConverter.ExcelConverterX");
$c->convert("C:\\Data\\report.xlsx", "C:\\Data\\report.pdf",
"-cPDF -log C:\\Logs\\excel.log");Python:
import win32com.client
c = win32com.client.Dispatch("ExcelConverter.ExcelConverterX")
c.convert(r"C:\Data\report.xlsx", r"C:\Data\report.pdf",
"-cPDF -log C:\Logs\excel.log")ASP, Ruby, Pascal, Perl, and JavaScript (WSH) are also supported. See the product page for more examples.
The converter reads XLSX, XLS, XLSM, ODS, XML, and other spreadsheet formats with its own parser. Microsoft Excel is not required. There is no graphical interface — the program runs as a console process or COM object, making it safe for Windows Server environments where interactive services are disabled.
Pass a wildcard (*.xlsx) to convert every spreadsheet in a folder with a single command. Combine multiple XLSX files into one PDF, or split each worksheet into a separate file. A built-in renamer adds counters or sheet names to output filenames automatically.
Set a user password (required to open the PDF) and an owner password (controls print, copy, and edit permissions) directly from the command line. Financial reports, salary tables, and compliance documents stay protected without manual steps.
Specify paper size (A4, Letter, Legal, custom), orientation, and margins via flags. Add headers and footers with page numbers, dates, file names, or custom text. Fit wide tables to page width automatically.
Every conversion writes status and errors to a log file. No message boxes, no pop-ups, no user prompts. Monitor the log from your application or send it to a centralized logging system.
Besides PDF, convert XLSX to DOC, DOCX, HTML, CSV, TIFF, JPEG, XML, TXT, ODS, SQL, LaTeX, and more — all with the same command-line syntax. One tool covers every format your pipeline needs.
| Feature | Online Tools | Total Excel Converter X |
|---|---|---|
| File size limit | 10–100 MB | No limit |
| Batch conversion | Limited or paid API | Unlimited (wildcard) |
| Privacy | Files uploaded to cloud | 100% local processing |
| PDF encryption | Rarely available | Built-in (user + owner passwords) |
| Page layout control | Minimal | Full (size, margins, headers) |
| Server integration | REST API (paid) | COM/ActiveX + command line |
| Office dependency | None (cloud) | None (standalone parser) |
| Automation | Manual or API calls | .bat files + Task Scheduler |
| Pricing | Subscription per month | One-time server license |
(includes 30 day FREE trial)
(server license)
"We process 400+ financial reports every night. Total Excel Converter X sits behind a Task Scheduler job, converts all incoming XLSX files to encrypted PDFs, and logs everything. Zero manual intervention since we set it up two years ago."
Daniel Krause DevOps Engineer
"The ActiveX integration saved us weeks of development. Three lines of PHP code and our intranet app converts uploaded spreadsheets to PDF on the fly. No Office dependency, no temp file cleanup issues."
Mariana Costa Senior PHP Developer
"Solid command-line tool. Handles batch conversion of XLS and XLSX to PDF without any problems on our Windows Server 2019 setup. The logging is clean and easy to integrate with our monitoring stack."
James Whitfield IT Infrastructure Manager
Download free trial and convert your files in minutes.
No credit card or email required.
string src="C:\\test\\Source.xlsx";
string dest="C:\\test\\Dest.PDF";
ExcelConverterX Cnv = new ExcelConverterX();
Cnv.Convert(src, dest, "-c PDF -log c:\\test\\Excel.log");
MessageBox.Show("Convert complete!");
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 msgPath = $@"{assemblyDirectoryPath}\MSG\MSG-1.xlsx";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(msgPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & MSG files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{msgPath} {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"
Rresponse.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.XLS";
$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(file_path):
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.XLS"; 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;

Related Topics
Total Excel Converter