TXLSForwardReader 类
TXLSForwardReader 为经典 XLS、现代 XLSX、ODS、CSV 和 TSV 输入提供一个投影化的、回调驱动的统一表面,无需构建完整的工作簿对象模型;它适配 TXLSRowCursor 为经典 XLS、现代 XLSX、CSV 和 TSV 输入提供一个单一的、带投射的回调驱动表面,而无需构建完整的工作簿对象模型
输入格式
TXLSForwardFormat 选择自动检测或强制 XLS、XLSX、CSV 或 TSV 解析
ReadFile 打开一个命名源, ReadStream 从调用方的当前流位置读取,并在返回时恢复该位置
投射与行边界
IncludeColumn 将基于 0 的列添加到恒定时间的投射集合中, ClearColumnProjection 恢复全列输出, HasColumnProjection 报告下推是否处于活动状态
FirstRow 和 LastRow 在回调分发之前应用基于 1 的行边界,允许解析器在请求的区间之后停止
回调与值转换
| OnSheet | 接收每个工作表名称,并且可以跳过某个工作表或中止整个读取 |
| OnCell | 接收每个投射单元格的行、列、样式索引、规范化的缓存值、公式存在性以及公式文本可用性 |
| IncludeFormulaText | 保留公式存在性和缓存值,同时可选地抑制公式文本的累积 |
| DetectDates | 使用工作簿数字格式识别日期和时间值 |
| DetectTextTypes | 在无歧义的情况下将 CSV 和 TSV 字段转换为受支持的标量类型 |
| PreserveRichText | 在源格式支持的情况下保留格式化的文本段和拼音负载 |
| ValueSeparator | 在格式检测不适用时覆盖文本字段分隔符 |
HasFormula 为 false; FormulaTextAvailable 只有在 Formula 包含可靠文本时才为 true。经典 XLS 会报告缓存的公式结果但公式文本不可用,因为 forward 路径不反编译 BIFF token
完成状态
CellCount 报告已分发的单元格数量, Aborted 区分调用方取消与正常完成
ClassicBytesRead 报告经典 XLS(BIFF)解析器消耗的总字节数, ClassicPeakBufferedBytes 报告其一次性持有的峰值缓冲字节数;两者都是经典 XLS 路径的只读诊断指标
PeakRowBufferedBytes 报告共享后端保留的最大估计逻辑行工作集, SheetPassesStarted 统计已激活的工作表遍历次数;被 OnSheet 拒绝的工作表不会打开其工作表部件,也不会增加计数
通过 OnSheet 和 OnCell 传递的工作表索引,在所有受支持的格式中都统一从 1 开始
示例
Reader := TXLSForwardReader.Create;
try
Reader.FirstRow := 2;
Reader.IncludeColumn(1);
Reader.IncludeColumn(5);
Reader.OnSheet := ReadSheet;
Reader.OnCell := ReadCell;
Reader.ReadFile('large-input.xlsx', xffAuto);
finally
Reader.Free;
end;选择流式 API
Use TXLSForwardReader when one application path must accept several callback-driven formats, TXLSDirectReader for XLSX-specific layout and parallel worksheet events, or TXLSRowCursor (当需要通过拉取式行迭代获得相同的共享解码语义时)