You have folders of DOCX files holding tabular data inside Word tables — financial models, contract appendices, regulatory submission tables, audit checklists. The numbers are locked inside a prose document, where you cannot sort, filter, sum, or feed them into a downstream system. Re-keying tables into Excel by hand is slow and error-prone. Total Doc Converter X converts DOCX files to XLS from the command line, in batch, with no GUI and no Microsoft Office installation required. Install it on a Windows server, call it from a script or via ActiveX, and let it run unattended.
*.docx) and the converter processes every matching file in one run
(30 days, no email)
(server license, perpetual)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
DOCX is a Word document format built for prose. Tables inside DOCX are visual artifacts — rows and cells designed to be read, not calculated. There is no formula engine, no sorting, no filtering, no charting. A 200-row financial table inside a DOCX is essentially a static picture of numbers, even when the cells contain real digits.
XLS is the Microsoft Excel format used everywhere numbers need to be analyzed. Cells hold typed values that participate in formulas, pivot tables, and data validation. XLS files plug into BI tools, accounting systems, ERP imports, and Power Query. When tabular data lives inside a Word document and needs to be calculated or imported, it has to become XLS first.
| DOCX | XLS | |
|---|---|---|
| Purpose | Prose, contracts, reports | Numeric analysis, models, data feeds |
| Cells | Static visual layout | Live values with types and formulas |
| Calculations | None | SUM, VLOOKUP, pivot tables, charts |
| Sorting / filtering | Not supported | Built in |
| Downstream integration | Manual re-keying | Direct import to ERP, BI, databases |
Download the installer from the link above and run it on your Windows server or workstation. The setup takes under a minute. No Microsoft Word or Excel installation is required — the converter uses its own engine to read DOCX tables and write XLS files directly.
Open cmd.exe or PowerShell. The converter executable is DOCConverter.exe, located in the installation folder (typically C:\Program Files\CoolUtils\TotalDocConverterX\). Add it to your system PATH or use the full path in your commands.
The simplest command converts all DOCX files in a folder to XLS:
DOCConverter.exe C:\Reports\*.docx C:\Output\ -c XLS
This processes every .docx file in C:\Reports\ and saves the resulting XLS files in C:\Output\. Each DOCX file produces one XLS with the same base name. Tables inside the DOCX become rows and columns in the worksheet.
Control the XLS output with additional flags:
DOCConverter.exe C:\Reports\*.docx C:\Output\ -c XLS -SheetName Data -log C:\Logs\docx2xls.log
-c XLS — target format (use -c XLSX for the newer Excel format)-SheetName Data — name the worksheet that holds the extracted tables-log C:\Logs\docx2xls.log — write a conversion log for verification-deleteSrc — remove source files after a successful conversion (use with care)Save your command in a .bat file and schedule it with Windows Task Scheduler:
@echo off "C:\Program Files\CoolUtils\TotalDocConverterX\DOCConverter.exe" C:\Incoming\*.docx C:\Archive\XLS\ -c XLS -SheetName Data -log C:\Logs\docx2xls.log
This runs the conversion every night (or at whatever interval you set) and writes a log file so you can verify the results.
Total Doc Converter X includes a full ActiveX interface. You can call the converter from any COM-compatible environment — .NET, VBScript, PHP, Python, Ruby, or ASP. This lets you embed DOCX-to-XLS conversion into your own web application, intranet portal, or document workflow without shelling out to a command-line process.
Example (C#/.NET):
DOCConverterX Cnv = new DOCConverterX();
Cnv.Convert("C:\\Reports\\budget.docx", "C:\\Output\\budget.xls", "-c XLS -log c:\\Logs\\doc.log");
Example (PHP):
$c = new COM("DOCConverter.DOCConverterX");
$c->convert("C:\\Reports\\budget.docx", "C:\\Output\\budget.xls", "-c XLS -log c:\\Logs\\doc.log");
The same call works from ASP.NET, VBScript, Python, Ruby, Perl, and JavaScript (Windows Script Host). Your web application can accept uploaded DOCX files and return live XLS spreadsheets to the user in real time.
| Feature | Online Converters | Total Doc Converter X |
|---|---|---|
| Batch processing | One file at a time | Unlimited files per batch |
| File privacy | Files uploaded to third-party server | Files never leave your machine |
| Table extraction | Often dumps text into one column | Maps Word tables to real cells |
| Output fidelity | Numbers stored as text strings | Numeric cells, ready for formulas |
| Automation | Manual only | Command line, .bat, Task Scheduler, ActiveX |
| Server deployment | Not possible | Designed for servers, no GUI needed |
| Requires Office installed | N/A | No |
| Requires internet | Yes | No |
The converter writes valid XLS files directly. You do not need Microsoft Word, Excel, or any office suite installed on the server. This avoids licensing costs and the well-known instability of automating Office in unattended scenarios.
Total Doc Converter X is designed for unattended use. No GUI windows, no dialog boxes, no confirmation prompts. It runs silently from the command line or as part of a service — exactly what a production server needs.
Cells in the resulting XLS hold real numeric values, not text strings that look like numbers. SUM, AVERAGE, and pivot tables work immediately. You can sort, filter, and feed the spreadsheet into any system that consumes XLS, without a cleanup pass.
The same command-line tool converts DOCX to PDF, XLSX, HTML, TIFF, JPEG, RTF, TXT, and more. One installation covers all your DOCX conversion needs. Change -c XLS to -c PDF and you get PDF output with the same batch and automation features.
(30 days, no email or credit card)
(server license, perpetual)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"Our subsidiaries send monthly reporting packs as DOCX with budget tables embedded inside the narrative. We used to copy each table into Excel by hand. Total Doc Converter X runs as a nightly batch on the consolidation server and produces XLS files we feed straight into the group reporting model. Numbers stay numeric, which means our SUMIF formulas worked from day one without a cleanup pass."
Lukas Hoffmann Financial Controller, Industrial Holding
"We needed to ingest about 12,000 historical DOCX submissions into a data warehouse. The tables inside were the only thing we cared about. One .bat file, one weekend, and we had a folder of XLS files that loaded cleanly through Power Query. The CLI is well-behaved in unattended mode and the log captured the few corrupt source documents so we could route them for manual review."
Priya Raman Data Engineer
"Our regulatory submissions arrive as Word documents with dense statistical tables. We integrated the ActiveX interface into our internal compliance portal so reviewers can pull a DOCX and get an XLS back for reconciliation. Rendering quality on multi-page tables is solid. Documentation around the COM object could be clearer in places, but support replied to our questions within a day."
Caroline Ashby Compliance Analyst, Regulated Bank
DOCConverter.exe C:\Reports\*.docx C:\Output\ -c XLS. This converts every DOCX file in the source folder to XLS. Add flags like -SheetName Data or -log to name the worksheet and capture a verification log.-SheetName. Prose paragraphs between tables are skipped — the XLS output focuses on the tabular data, which is the point of converting to a spreadsheet.DOCConverter.DOCConverterX). You can call it from .NET, PHP, Python, VBScript, ASP, Ruby, Perl, and any other COM-compatible environment to embed DOCX-to-XLS conversion in your own application.
Download free trial and convert your files in minutes.
No credit card or email required.
string src = @"C:\test\Source.docx";
string dest = @"C:\test\Dest.pdf";
var cnv = new DocConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\Doc.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\DocConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.docx";
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}\" -cPDF";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("DocConverter.DocConverterX")
C.Convert "c:\source.docx", "c:\dest.pdf", "-cPDF -log c:\doc.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("DocConverter.DocConverterX")
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.docx", "C:\www\ASP", "-cpdf -log c:\doc.log")
set C = nothing
$src="C:\\test\\test.docx";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("DocConverter.DocConverterX");
$c->convert($src,$dest, "-cPDF -log c:\\test\\Doc.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('DocConverter.DocConverterX')
src = "C:\\test\\test.docx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Doc.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("DocConverter.DocConverterX")
src = "C:\\test\\test.docx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Doc.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('DocConverter.DocConverterX');
c.Convert('c:\test\source.docx', 'c:\test\dest.pdf', '-cPDF -log c:\test\Doc.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("DocConverter.DocConverterX");
c.Convert("C:\\test\\source.docx", "C:\\test\\dest.pdf", "-cPDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.docx"; my $dest = "C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'DocConverter.DocConverterX'; $c->convert($src, $dest, "-cPDF -log c:\\test\\Doc.log"); print $c->ErrorMessage if -e $dest;