您有大量装满<table>数据的HTML文件或抓取的网页 — 财务报表、产品目录、导出的分析仪表板 — 您需要将它们转换为真正的Excel电子表格,以便分析人员排序、筛选、求和和透视。在浏览器中逐个打开文件并将表格复制粘贴到Excel中,处理超过两个文件后就会破坏公式并毁坏格式。Total HTML Converter X可通过命令行批量将HTML文件转换为XLS,无需GUI,无需安装Microsoft Excel。将其安装在Windows服务器上,通过脚本或ActiveX调用,即可实现无人值守运行。
*.html),转换器即可在一次运行中处理所有匹配文件<table>、<tr>、<td>、<th>、colspan和rowspan,以及影响单元格内容的内联样式
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
HTML可以显示表格数据,但并不将其作为电子表格存储。浏览器中的<table>是只读标记 — 您无法对列进行排序、筛选行、编写SUM公式或构建透视表。数字只是单元格内的文本,并非分析人员可以计算的数值。
XLS是Microsoft Excel格式,可将相同数据转化为可工作的电子表格。每个单元格都保存有类型化的值 — 数字、日期、字符串 — 支持公式、排序、筛选、条件格式和透视表。当HTML页面中困住的数据需要进入分析工作流时,必须先转换为XLS。
| HTML | XLS | |
|---|---|---|
| 数据类型 | <td>标签内的文本 | 类型化的单元格值(数字、日期、字符串) |
| 排序与筛选 | 不支持 | Excel内置功能 |
| 公式 | 无 | SUM、AVERAGE、VLOOKUP、透视表 |
| 受众 | 网页访客 | 分析人员、会计、财务团队 |
| 工作流 | 网页展示 | 报表、建模、BI导入 |
从上方链接下载安装程序,在Windows服务器或工作站上运行。安装不到一分钟即可完成。无需安装浏览器或Microsoft Excel — 转换器使用自有引擎解析HTML并直接生成XLS,完整支持HTML表格、colspan和rowspan以及嵌入式CSS样式。
打开cmd.exe或PowerShell。转换器可执行文件为HTMLConverter.exe,位于安装文件夹中(通常为C:\Program Files\CoolUtils\TotalHTMLConverterX\)。将其添加到系统PATH,或在命令中使用完整路径。
最简单的命令是将文件夹中所有HTML文件转换为XLS:
HTMLConverter.exe C:\Pages\*.html C:\Output\ -c XLS
此命令处理C:\Pages\中的每个.html文件,并将生成的XLS文件保存到C:\Output\。每个HTML文件生成一个同名的XLS。源中的表格落入单元格区域;数字字符串成为分析人员可以计算的数值。
使用附加标志控制XLS输出:
HTMLConverter.exe C:\Pages\*.html C:\Output\ -c XLS -CodePage 65001 -Sheet ReportData -log C:\Logs\html2xls.log
-CodePage 65001 — 设置编码(65001 = UTF-8,1252 = 西欧,1251 = 西里尔字母,932 = Shift-JIS)-Sheet ReportData — 命名XLS内的结果工作表-FirstRowAsHeader 1 — 将每个表的第一行标记为XLS中的标题行-log C:\Logs\html2xls.log — 写入转换日志以便验证将命令保存到.bat文件中,并通过Windows任务计划程序安排执行:
@echo off "C:\Program Files\CoolUtils\TotalHTMLConverterX\HTMLConverter.exe" C:\Incoming\*.html C:\Archive\XLS\ -c XLS -CodePage 65001 -Sheet Data -log C:\Logs\html2xls.log
此脚本每晚(或按您设定的任何间隔)运行转换,并写入日志文件以便您验证结果。将一批新的HTML报表放入C:\Incoming\,第二天早上即可从C:\Archive\XLS\提取XLS文件。
Total HTML Converter X包含完整的ActiveX接口。您可以从任何兼容COM的环境调用转换器 — .NET、VBScript、PHP、Python、Ruby或ASP。这使您能够将HTML到XLS的转换功能嵌入自己的Web应用、内部网门户或报表服务,无需通过命令行进程调用。
示例(C#/.NET):
HTMLConverterX Cnv = new HTMLConverterX();
Cnv.Convert("C:\\Pages\\report.html", "C:\\Output\\report.xls", "-c XLS -CodePage 65001 -log c:\\Logs\\html.log");
示例(PHP):
$c = new COM("HTMLConverter.HTMLConverterX");
$c->convert("C:\\Pages\\report.html", "C:\\Output\\report.xls", "-c XLS -CodePage 65001 -log c:\\Logs\\html.log");
同样的调用方式适用于ASP.NET、VBScript、Python、Ruby、Perl和JavaScript(Windows Script Host)。您的Web应用可以接受上传的HTML页面或URL,并实时向用户返回可工作的XLS电子表格。
| 功能 | 在线转换器 | Total HTML Converter X |
|---|---|---|
| 批量处理 | 一次一个文件 | 每批次无限文件 |
| 文件隐私 | 文件上传至第三方服务器 | 文件不会离开您的机器 |
| 表格解析 | 基本,合并单元格常常损坏 | 完整<table>支持,保留colspan/rowspan |
| 数值 | 常常保存为文本字符串 | 数字落入数值单元格,公式可用 |
| 编码控制 | 自动猜测 | 显式-CodePage标志,无需猜测 |
| 自动化 | 仅手动操作 | 命令行、.bat、任务计划程序、ActiveX |
| 服务器部署 | 不可能 | 专为服务器设计,无需GUI |
| 需要安装Excel | 不适用 | 否 |
| 需要互联网 | 是 | 否 |
转换器直接生成有效的XLS文件。您无需在服务器上安装Microsoft Office、LibreOffice或任何电子表格应用程序。这避免了授权成本,也避免了在无人值守场景中自动化Excel众所周知的不稳定问题 — 没有遗留的EXCEL.EXE进程,没有DCOM身份问题,没有随机挂起。
Total HTML Converter X专为无人值守使用而设计。没有GUI窗口,没有对话框,没有确认提示。它从命令行静默运行,或作为服务的一部分运行 — 正是生产服务器所需要的。在Windows计划任务下运行或作为CI流水线的一部分都很简单。
XLS输出包含类型化的单元格值,而不是倾倒到A列的一堆文本。数字就是数字,日期就是日期,字符串就是字符串。Excel的排序、筛选和公式无需任何后处理即可在结果上工作。源HTML中的标题行和合并单元格都会延续到电子表格中。
同一命令行工具可将HTML转换为PDF、DOC、TIFF、JPEG、RTF、TXT等格式。一次安装即可满足所有HTML转换需求。将-c XLS改为-c PDF,即可获得具有相同批处理和自动化功能的PDF输出 — 当财务希望XLS而法务希望签署版PDF的同一源时尤其有用。
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"我们每晚从十多个公开商品目录站点抓取竞争对手的定价。这些页面是HTML表格,但我们的定价模型存在Excel中。Total HTML Converter X通过一个.bat任务将抓取的页面转换为XLS文件,数值单元格格式正确,VLOOKUP立即就能工作。-CodePage标志修复了之前工具一直在破坏的带重音的产品名称。"
Priya Ramanathan Senior Data Analyst, Retail Analytics
"我们的SaaS为客户导出HTML报表,但企业客户一直要求XLS。我们将ActiveX接口嵌入到PHP后端,因此同一份HTML报表可以按需以可工作的电子表格形式交付。COM调用返回真实的XLS,包含可排序的列,而不是倾倒到A列的文本堆。同一周内我们就从服务器栈中移除了Excel自动化。"
Tobias Kleinmann Backend Developer, Reporting Platform
"我们迁移了一个将预算数据以HTML表格形式显示在数千个页面上的旧内部网。批量转换为XLS在一台Windows Server 2019机器上运行了一个周末,无需Office许可证,财务部门将生成的电子表格直接导入到他们的新系统中。围绕一些较冷门标志的文档可以更丰富,但当我们对编码有疑问时,技术支持在一天内做了回复。"
Rosa Fernandez IT Manager, Municipal Government
HTMLConverter.exe C:\Pages\*.html C:\Output\ -c XLS。此命令将源文件夹中的每个HTML文件转换为XLS。添加-CodePage 65001、-Sheet ReportData或-log等标志以控制输出。<table>、<tr>、<td>和<th>元素映射到XLS中的行和列。Colspan和rowspan保留为合并单元格。数字字符串成为可与SUM、AVERAGE和透视表配合使用的数值。-CodePage标志。-CodePage 65001是UTF-8,1252是西欧,1251是西里尔字母,932是Shift-JIS。将其设置为与源HTML中声明的编码相匹配,单元格内容即可无损落入XLS。HTMLConverter.HTMLConverterX)。您可以从.NET、PHP、Python、VBScript、ASP、Ruby、Perl及任何其他兼容COM的环境中调用它,在自己的Web应用中按需将HTML转换为XLS。-Sheet YourSheetName,生成的工作簿的工作表将使用该名称而不是默认值。当XLS需要喂入查找特定工作表名称的下游系统时尤其有用。
string src="C:\\test\\Source.HTML";
string dest="C:\\test\\Dest.PDF";
HTMLConverterX Cnv = new HTMLConverterX();
Cnv.Convert(src, dest, "-c PDF -log c:\\test\\HTML.log");
MessageBox.Show("转换完成!");
下载
.NET HTML 转换器示例
专为 ASP.net 设计的 C# 服务器示例
使用 C# 的 WinForms 客户端应用程序
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
C.Convert "c:\source.HTML", "c:\dest.JPG", "-cJPG -log c:\html.log"
C.Convert "https://www.coolutils.com/", "c:\URL Page.PDF", "-cPDF -log c:\html.log"
set C = nothing
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
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.html", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
示例 PHP:
$src="C:\\test\\test.html";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("HTMLConverterPro.HTMLConverterX");
$c->convert($src,$dest, "-c pdf -log c:\\HTML.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('HTMLConverterPro.HTMLConverterX')
src="C:\\test\\test.html";
dest="C:\\test\\test.tiff";
c.convert(src,dest, "-c TIFF -log c:\\test\\HTML.log");
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("HTMLConverterPro.HTMLConverterX")
src="C:\\test\\test.eml";
dest="C:\\test\\test.tiff";
c.convert(src, dest, "-c TIFF -log c:\\test\\HTML.log");
if not os.path.exists(file_path):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c:=CreateOleObject('HTMLConverterPro.HTMLConverterX');
C.Convert('c:\test\source.html', 'c:\test\dest.tiff', '-c TIFF -log c:\test\HTML.log');
IF c.ErrorMessage<> Then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("HTMLConverterPro.HTMLConverterX");
c.Convert("C:\\test\\source.html", "C:\\test\\dest.pdf", "-c PDF");
if (c.ErrorMessage!="")
alert(c.ErrorMessage)
use Win32::OLE; my $src="C:\\test\\test.html"; my $dest="C:\\test\\test.tiff"; my $c = CreateObject Win32::OLE 'HTMLConverterPro.HTMLConverterX'; $c->convert($src,$dest, "-c TIFF -log c:\\test\\HTML.log"); print $c->ErrorMessage if -e $dest;