HotXLS 文件

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

另請參閱