概览
![]() |
HotXLS Excel 读/写库是面向 Delphi 与 C++Builder 的高性能 Excel 读写组件
它可以创建新的 Excel 电子表格,并在无需安装 Microsoft Excel 或 Office 的情况下读取或修改现有的 XLS 和 XLSX 工作簿
HotXLS 完全使用 Object Pascal 编写。它在二进制和 OOXML 层面直接读写 Excel 文件
因而没有 COM/OLE 自动化开销,也不依赖 Office 的授权或存在。HotXLS 支持 Delphi 和 C++Builder XE5 至 13 Florence
经典 XLS 颜色格式化有意保持基于调色板的方式。参见 经典 XLS 颜色模型
了解 ThemeColor / TintAndShade 的决策
|
双外观架构
HotXLS 提供两个并存的外观单元,使旧有 XLS 代码与新 XLSX 代码能够并存而无需任何重构
lxHandle |
Excel 97–2003 BIFF8 格式(.xls)的主外观,以及 HTML、RTF、CSV 和 TSV
导出。所有现有用户代码可继续使用此单元而无需更改。入口点:
TXLSWorkbook、TXLSWorksheet、IXLSWorkbook、IXLSRange
|
lxHandleX |
Excel 2007+ OOXML 格式(.xlsx)和 OpenDocument 电子表格
(.ods)读写的主外观。提供自己的工作簿和工作表类型,因此 XLSX 特有行为不会被附加到 BIFF 代码路径上。入口点:
TXLSXWorkbook、TXLSXWorksheet、TXLSXCell
|
两个外观共享同一公式引擎、同一 Unicode 支持层以及同一导出流水线
参见 XLSX 外观概览,了解
lxHandleX 所公开的完整类层次结构
快速入门
以下代码片段展示了创建包含一个工作表并向单元格写入值的工作簿所需的最少代码
经典 XLS(lxHandle)
uses lxHandle;
var
Book: IXLSWorkbook;
ws: TXLSWorksheet;
begin
Book := TXLSWorkbook.Create;
// 添加一个工作表并为其命名
ws := Book.Sheets.Add;
ws.Name := 'Sheet1';
// 使用 A1 表示法向单元格写入值
ws.Range['A1'].Value := 'Hello';
ws.Range['B1'].Value := 42;
ws.Range['C1'].Formula := '=B1*2';
// 应用基本格式
ws.Range['A1'].Font.Bold := True;
ws.Range['A1'].Interior.Color := clYellow;
Book.SaveAs('output.xls');
end;
XLSX(lxHandleX)
uses lxHandleX;
var
Book: TXLSXWorkbook;
ws: TXLSXWorksheet;
cell: TXLSXCell;
begin
Book := TXLSXWorkbook.Create;
try
ws := Book.Sheets.Add('Sheet1');
// 写入一个字符串和一个数值
ws.Cells[1, 1].Value := 'Product';
ws.Cells[1, 2].Value := 'Price';
ws.Cells[2, 1].Value := 'Widget';
ws.Cells[2, 2].Value := 9.99;
// 应用货币数字格式
cell := ws.Cells[2, 2];
cell.NumberFormat := '$#,##0.00';
Book.SaveAs('output.xlsx');
finally
Book.Free;
end;
end;
如需在单个演示工程中同时涵盖两个外观的更全面走查,请参见
API Tour 演示
特性
文件 I/O 与流支持
读取现有 Excel 文件、写入新文件或现有 Excel 文件、处理经典 XLS 密码保护和 XLSX 加密保存工作流,并能快速列出 XLS 和 XLSX 文件或流的表名而无需加载整个工作簿。通过
IXLSWorkbook.OpenCSV 支持将 CSV 作为工作簿打开
单元格值与公式
读取和写入所有原生 Excel类型的单元格值:数字、字符串、日期/时间、布尔值和公式
内置计算引擎可在经典 XLS 和 XLSX 工作簿中计算公式,支持
- 文本函数(
LEFT、MID、TRIM、SUBSTITUTE、…) - 日期和工作日函数(
DATE、NETWORKDAYS、WORKDAY、…) - 工程与进制转换函数(
BIN2DEC、HEX2DEC、…) - 按位运算函数(
BITAND、BITOR、BITXOR、…) - 统计与聚合函数(
AVERAGE、SUMIF、COUNTIFS、…) - 数学函数(
ROUND、MOD、POWER、…)
OnUserFunction 回调允许在运行时处理自定义或不受支持的工作表函数
参见 OnUserFunction 回调 了解签名与示例

单元格格式
全面访问单元格外观属性:
- 字体 — 名称、大小、颜色(RGB 或主题颜色 + 色调)、粗体、斜体、下划线、 删除线、上标、下标、阴影和轮廓
- 对齐 — 水平和垂直对齐、文本方向(角度)、缩进 级别、自动换行、缩小以填充以及阅读顺序(RTL/LTR)
- 边框 — 全部四条边和对角线、线型、粗细以及 RGB / 主题颜色
- 内部(填充) — 实心填充、图案填充、前景色和背景色 包括带 TintAndShade 的主题颜色
- 数字格式 — 用于日期、时间、货币、 百分比和科学记数的内置与自定义格式字符串
- 批注 / 注释 — 添加、读取和设置单元格批注样式
范围操作
IXLSRange(经典外观)和 TXLSXRange(XLSX 外观)提供了一组丰富的
范围操作:
- 合并与取消合并单元格;访问任意单元格的合并区域
- 复制、移动、插入和删除范围,并控制移动方向
- 对行或列进行分组与取消分组,以实现大纲/折叠视图
- 根据单元格内容自动调整行高和列宽
- 应用内置命名单元格样式(
ApplyBuiltinStyle) - 多区域选择(
TXLSWorksheet.SelectAreas) - ForEachCell 迭代回调,用于批量单元格处理
工作表特性
工作表级别的控制包括:
- 表名、标签颜色、可见性(隐藏 / 深度隐藏)以及基于索引的导航
- 带逐项权限粒度的工作表保护;工作簿级别保护
- 冻结窗格、拆分窗格和滚动位置
- 带条件的自动筛选范围;列表数据验证规则
- 条件格式:色阶(2 色和 3 色)、数据条和图标集
- 在工作表范围内查找文本和替换文本
- 视图选项:网格线颜色、显示公式模式、显示零值、显示标题、 显示从右到左、显示大纲符号以及缩放级别
- 结构化表格(
TXLSTable/TXLSXTable):添加、访问和设置 带标题行和镶边行的 Excel 表格样式 - 图表:通过
TXLSWorksheetsAddChartSheet和TXLSXChart添加图表工作表和嵌入式图表
超链接与命名范围
通过
IXLSHyperLinks 添加和读取超链接(URL、mailto 以及工作簿内单元格引用)。通过
IXLSNames / TXLSXDefinedNames 在工作簿和工作表作用域定义和解析命名范围。命名范围可用于公式,并可通过
RefersToRange 反向解析为单元格范围
图像与形状
通过
TXLSShapes.AddPicture / TXLSXWorksheet.AddImage 将光栅图像(BMP、JPG、PNG、GIF)嵌入工作表。通过 TXLSShapes.AddTextBox 在经典 XLS 中创建独立文本框。在 BIFF8 绘图中保留 Excel 创建的 OfficeArt 连接器和求解器规则,并通过
TXLSShape.OfficeArtOptions 公开原始形状 FOPT 选项以供专家级绘图工作流使用
页面设置与打印
通过
IXLSPageSetup 全面访问打印布局:
- 纸张大小(A4、Letter、Legal 以及其他多种;参见 PaperSize)
- 方向(纵向 / 横向)、边距、水平 / 垂直居中
- 带 Excel 格式化代码的页眉和页脚字符串(粗体、斜体、页码、日期等; 参见 页眉/页脚格式化代码)
- 手动水平和垂直分页符
- 适应页面缩放;缩放百分比;打印区域;打印标题(重复行 / 列)
- 草稿质量;黑白;打印网格线;打印标题;打印批注
导出格式
将整个工作簿、单个工作表或任意单元格范围导出为:
- HTML — 完整文档或用于预览或邮件工作流的内联表格片段;
可通过
TXLSHTMLExport和TXLSXHtmlExportOptions控制 - RTF — 用于文字处理器导入的富文本
- CSV — 逗号分隔值,支持可配置的分隔符和编码
- TSV — 制表符分隔值
- ODS — 通过
lxHandleX外观的 OpenDocument 电子表格
数据库与网格导出
使用
TDataToXLS 或
TGridToXLS 组件,将任意 TDataSet 兼容数据集或 TDBGrid 直接导出为 Excel、HTML 或 RTF
两个组件都会触发 AfterCell、AfterRow、AfterTitle 和
AfterGroup 事件以实现细粒度输出控制,并支持多级分组字段
VBA 工程保留
HotXLS 在往返启用宏的工作簿时会保留 VBA 工程负载。通过
TXLSVBAProject 和 TXLSVBAModule 提供只读模块检查
调用 IXLSWorkbook.HasVBAProject 检测负载,并使用
LoadVBAProjectFromFile / SaveVBAProjectToFile 在文件之间传递它
Unicode 与国际化文本
所有字符串处理均为 Unicode 原生。HotXLS 可读写以任意语言编写的 Excel 文件,
包括 CJK、阿拉伯语、希伯来语、泰语和其他脚本,并提供正确的双向文本和阅读顺序
支持

数据透视表(经典 XLS)
通过
TXLSWorksheet.AddPivotTable 从来源范围创建数据透视表,配置字段放置和数据字段数字格式,并通过 TXLSWorksheet.PivotTables 检查透视模型
参见 经典 XLS 数据透视表 API 了解字段和筛选器细节
优势
| No Office dependency | 直接在二进制层面读写 XLS 和 XLSX 文件。无需安装、授权或运行 Microsoft Excel 或 Office。这消除了 COM/OLE 自动化开销,避免了 Office 互操作带来的线程限制,并允许 HotXLS 在无法安装桌面版 Office 的服务器端和服务场景中使用 |
| High performance | BIFF8 和 OOXML 解析器使用原生 Object Pascal 编写,热路径上没有中间 XML DOM 分配。包含数十万行的大型工作簿可在低峰值内存下读写。共享字符串去重和共享公式压缩会自动应用,以保持较小的文件大小 |
| OLE migration path | 经典外观的 API 表面(工作簿、工作表、范围、字体、边框、内部、页面设置)密切映射 OLE 自动化中熟悉的 Excel 对象模型。这使得迁移现有基于 OLE 的工程变得简单:用 HotXLS 调用替换 COM 调用,移除 Office 依赖,即可获得原生性能 |
| Dual-facade design |
旧有 XLS 代码可针对 lxHandle 继续编译和运行而无需更改,同时新 XLSX 代码可使用更丰富的 lxHandleX 外观。一次迁移一种文件格式是安全且渐进的
|
| Formula engine included |
内置的多遍计算引擎可处理最常用的工作表函数,而无需 Excel 在打开时重新计算。自定义函数通过 OnUserFunction 回调处理
|
| Easy to use |
即插即用的 Delphi 组件(TDataToXLS、TGridToXLS)无需编写代码即可完成常见导出任务。流畅的范围 API 支持 A1 表示法、R1C1 表示法以及从 0 开始的行/列索引
|
| Thread-safe file I/O |
由于没有共享的 Office 进程,多个 TXLSXWorkbook 实例可在独立线程上并发创建和保存而无需同步,使 HotXLS 适用于多线程报表生成服务器
|
兼容性
HotXLS 兼容以下 RAD Studio 版本:
| Delphi | XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence |
| C++Builder | XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence |
| Target platforms | Windows 32-bit and 64-bit |
| Excel file formats | XLS (BIFF8, Excel 97–2003), XLSX (OOXML, Excel 2007+), ODS (OpenDocument 1.2) |
| Export-only formats | HTML, RTF, CSV, TSV |
另请参见
- XLSX 外观概览(lxHandleX) — 完整的类层次结构和 XLSX/ODS 特有 API 成员
- API Tour 演示 — 从零开始学习 HotXLS 时应首先运行的演示
- IXLSWorkbook — 经典 XLS 工作簿接口参考
- TXLSWorksheet — 经典 XLS 工作表类参考
- IXLSRange — 范围接口:单元格访问、格式化和 操作
- TXLSXWorkbook — XLSX 工作簿类参考
- TXLSXWorksheet — XLSX 工作表类参考
- TGridToXLS — 即插即用的 DBGrid 转 Excel 导出组件
- TDataToXLS — 即插即用的数据集转 Excel 导出组件
- OnUserFunction 回调 — 自定义工作表函数 扩展点
- 经典 XLS 颜色模型 — 基于调色板的颜色和主题 颜色设计依据
- 经典 XLS 附加 API 成员 — 计算 属性、文档属性、数据透视表等
- 示例 — 示例工程概览
- 采购订单示例 — 带源代码的全功能 XLS 创建示例
