TXLSForwardReader 類別
TXLSForwardReader 為傳統 XLS、現代 XLSX、ODS、CSV 與 TSV 輸入提供單一投射式、回呼驅動的操作介面,而不必建構完整的活頁簿物件模型;它改用與 TXLSRowCursor 相同的資料列游標後端,因此推送與拉取兩種讀法共用同一套格式、投射與公式語義
輸入格式
TXLSForwardFormat 可選擇自動偵測,或強制以 XLS、XLSX、ODS、CSV 或 TSV 剖析
ReadFile 開啟具名來源,ReadStream 則從呼叫端目前的串流位置讀取,並在傳回時還原該位置
投射與資料列界限
IncludeColumn 會把一個 1 起始的資料行加入常數時間的投射集合,ClearColumnProjection 還原所有資料行輸出,HasColumnProjection 則回報下推是否作用中
FirstRow 與 LastRow 在回呼分派前套用一基底資料列界限,讓剖析器可在要求的區間之後停止
回呼與數值轉換
| OnSheet | 接收每個工作表名稱,可略過工作表或中止完整讀取 |
| OnCell | 接收每個投射儲存格的資料列、資料行、樣式索引、正規化後的快取值、公式存在標記,以及是否有公式文字 |
| IncludeFormulaText | 保留公式存在標記與快取值,同時可選擇性地抑制公式文字的累加 |
| DetectDates | 使用活頁簿數字格式識別日期與時間數值 |
| DetectTextTypes | 在無歧義時,將 CSV 與 TSV 欄位轉換為支援的純量型別 |
| PreserveRichText | 在來源格式支援處保留格式化文字執行與注音承載 |
| ValueSeparator | 在格式偵測不適用時覆寫文字欄位分隔符號 |
一般數值的 HasFormula 為 false;只有當 Formula 含有可靠文字時,FormulaTextAvailable 才會是 true。傳統 XLS 只會回報快取的公式結果而無法提供公式文字,因為前向路徑不反組譯 BIFF 權杖
完成狀態
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
當同一條應用程式路徑必須接受多種回呼驅動的格式時,使用 TXLSForwardReader;需要 XLSX 專屬的版面配置與平行工作表事件時,使用 TXLSDirectReader;若要透過拉取驅動的資料列迭代取得同一套共用解碼語義,則使用 TXLSRowCursor