常见问题

针对新 HotXLS 用户最常遇到的问题提供实用解答

本页面汇总了在安装 HotXLS、选择 XLS 或 XLSX 门面、评估试用版、导出报告以及部署 Delphi 或 C++Builder 应用程序时最容易出现的问题

原生库 工作簿在您的 Delphi 或 C++Builder 进程内部直接生成
XLS 与 XLSX 各自独立的门面让传统的 XLS 代码保持稳定,而 XLSX 能够独立发展
安装程序优先 请使用安装程序进行常规安装;它会自动检测支持的 RAD Studio 版本
无运行期授权费 应用程序部署时无需按副本缴纳运行期费用

安装与 IDE 设置

多数设置问题主要涉及 IDE 检测、受支持的版本以及可选的 C++Builder 内容

支持哪些 Delphi 和 C++Builder 版本?

完整包支持从 XE5 到 RAD Studio 13.1 Florence 版本的 Delphi 及 C++Builder。目前的试用版安装程序提供了适用于 RAD Studio 11.3、12.3 和 13.1 的包

为什么安装程序只列出了部分 IDE 版本?

IDE 页面仅列出在当前机器上检测到的受支持 RAD Studio 安装。如果未列出某个受支持的 IDE,请确认 RAD Studio 已安装,并确保安装程序运行在拥有这些 IDE 设置权限的同一个 Windows 用户配置文件下

设计期组件会出现在哪里?

安装程序会注册一个名为 losLab 的工具面板选项卡。其中的可视化组件为 DataToXLS 和 GridToXLS

安装后为什么缺少 C++Builder 包或演示项目?

C++Builder 的包文件与演示项目均为可选安装内容。如需 C++Builder 集成或演示,请在安装时勾选相应的 C++Builder IDE 复选框

是否支持 Win32 和 Win64?

是的。HotXLS 为受支持的 IDE 版本提供标准的 Win32 和 Win64 包输出。安装程序可能会为源码重新编译注册 Win64x 的库路径,但目前未随附预编译的 Win64x 包

我需要安装 Microsoft Excel 吗?

不需要。HotXLS 可直接读取、写入、应用样式并导出工作簿。它不需要 Microsoft Excel、Office 自动化、COM 自动化或其他外部电子表格进程

试用版本

试用版在 API 层面与完整版兼容,但会在后台自动限制工作簿的大小

试用版有哪些限制?

针对每个工作簿,试用版最多允许 5 个工作表,每个工作表最多 100 行和 26 列。XLS 门面与 XLSX 门面均受同样限制

为何我的试用版输出在 Z 列或第 100 行之后就中断了?

超出试用限制的写入操作依然会被 API 接收,但会在保存文件时被丢弃。完整版解除了这些限制,且不需要修改源代码

试用版会截断我打开的文件吗?

不会。打开工作表超过 5 个或者行列数超过 100 行和 26 列的现有工作簿并不会截断文件。这些限制仅针对工作簿创建之后,由用户发起的新增工作表和单元格写入操作生效

当触及限制时试用版会显示警告吗?

不会。这些限制是静默触发的:当写入超出试用版上限时,不会抛出对话框、日志记录或任何异常

选择 API

HotXLS 将经典 XLS API 与现代 XLSX API 相互隔离,以便现有项目能按照各自的节奏平稳过渡

我该使用 lxHandle 还是 lxHandleX?

经典 Excel 97-2003 XLS 工作流及遗留的报表代码请使用 lxHandle。Excel 2007+ XLSX 文件以及 OOXML 专属特性请使用 lxHandleX 和 TXLSXWorkbook

一个项目可以同时使用两种门面吗?

可以。应用程序可以包含这两个单元,并为每种文件格式维护独立的工作簿对象。这在需要保留旧版 XLS 输出并同时添加新版 XLSX 报表时十分有用

为何部分 XLSX 特性无法通过旧的 XLS API 获取?

XLS 与 XLSX 基于不同的文件模型。XLSX 专有的概念,如共享字符串、OOXML 样式、表格、图表工作表和包关系,都已直接置于 lxHandleX 中,而不会强行改造到经典 XLS 门面上

我可以从哪里找到示例代码?

请先查看 Delphi 或 C++Builder 演示文件夹下的 QuickStart 和 ApiTour 演示。关于 XLSX 专属代码,请参考 XLSX 门面总览及 XLSX 导出演示

XLSX 特性及限制

XLSX 门面涵盖了报表生成的常见需求,同时标明了有意留作日后支持的特性

XLSX 支持哪些特性?

TXLSXWorkbook 支持值、公式、显式公式计算、样式、自定义数字格式、宽高设置、合并单元格、区域级别的 HTML 导出、超链接、批注、图片、条件格式、数据验证、筛选器、表格、图表、富文本、文档属性、工作表可见性、页面设置、AES 加密保存以及基于流的打开/保存

我可以从流中保存或打开 XLSX 文件吗?

可以。XLSX 门面支持 SaveAs(Stream) 及 Open(Stream),适用于内存缓冲区、数据库 BLOB 字段、HTTP 响应等非文件系统的存储路径

如何处理大批量的 XLSX 导出?

请使用 XLSX 门面,并在按工作表逐一生成报表时启用 Workbook.StreamingWrite。流式写入能够降低保存期间工作簿的内存开销

HotXLS 可以打开或保存包含密码加密的 XLSX 压缩包吗?

只要提供非空密码,TXLSXWorkbook.SaveAsEncrypted 即可写入受 ECMA-376 AES 保护的 XLSX 容器。对于未加密的包,OpenEncrypted 可回退至普通 Open,但在解密支持正式发布前,对于加密包仍会引发 EXlsxEncryptionNotImplemented。工作表和工作簿保护依然作为 Excel 风格的独立锁定功能存在

我能保留宏吗?

XLSX 门面可以在工作簿中原封不动地保留 vbaProject.bin 载荷数据,并为了合法的 VBA 存储提供一个已解析的、只读的 ParsedVBAProject 视图。但它并不负责编译或执行 VBA 代码

HotXLS 内部会计算公式吗?

HotXLS 会将公式文本写入保存的工作簿中,电子表格软件会在文件打开时重新计算这些单元格。如果需要显式的进程内求值,经典 XLS 和 XLSX 门面均暴露了 Calculate 方法;当自定义或不受支持的工作表函数需要由应用代码处理时,请分配 OnUserFunction 事件

导出、部署与授权

这里的解答涉及输出格式、部署期望,以及在发布应用程序前经常被问及的授权事宜

除 XLS 或 XLSX 外,HotXLS 还能导出其他格式吗?

可以。HotXLS 内置了 CSV、TSV、HTML 和 RTF 等格式的导出辅助工具。请根据工作簿的格式选择相应的门面,并采用工作流所需的导出方法

HotXLS 可用于服务程序或批处理工具吗?

可以。由于 HotXLS 并非通过自动化控制 Excel,它十分适合桌面应用、服务程序、批处理任务、安装程序以及 Office 自动化可能极其脆弱或完全不可用的服务器端工具

是否存在运行期授权费用?

不存在。HotXLS 不需要缴纳运行期版权费用。您只需为使用该库构建应用程序的开发者购买开发者授权