TXLSForwardReader クラス
TXLSForwardReader は、完全なワークブック オブジェクト モデルを構築することなく、クラシック XLS、最新の XLSX、ODS、CSV、TSV 入力に対して、単一の射影されたコールバック駆動型サーフェスを提供します。TXLSRowCursor が使用するのと同じ行カーソル バックエンドを適応させるため、プッシュ型とプル型の読み取りが形式・射影・数式のセマンティクスを共有します
入力形式
TXLSForwardFormat は自動検出を選択するか、XLS、XLSX、ODS、CSV、TSV のいずれかの解析を強制します
ReadFile は名前付きソースを開き、ReadStream は呼び出し側の現在のストリーム位置から読み取り、戻り時にその位置を復元します
射影と行の境界
IncludeColumn は、1 から始まる列を定数時間の射影セットに追加し、ClearColumnProjection は全列出力を復元し、HasColumnProjection はプッシュダウンが有効かどうかを報告します
FirstRow と LastRow は、値の変換とコールバックのディスパッチの前に 1 から始まる行の境界を適用し、パーサーが要求された区間の後で停止できるようにします
コールバックと値の変換
| OnSheet | 各ワークシート名を受け取り、シートをスキップするか、読み取り全体を中止できます |
| OnCell | 射影されたすべてのセルについて、行、列、スタイル インデックス、正規化されたキャッシュ値、数式の有無、数式テキストの利用可否を受け取ります |
| IncludeFormulaText | 数式の有無とキャッシュ値を保持したまま、数式テキストの蓄積を選択的に抑制します |
| DetectDates | ワークブックの数値書式を使用して日付と時刻の値を識別します |
| DetectTextTypes | 曖昧でない場合、CSV および TSV フィールドをサポートされているスカラー型に変換します |
| PreserveRichText | ソース形式がサポートする場合、書式付きランと音声ペイロードを保持します |
| ValueSeparator | 形式検出が適切でない場合に、テキスト フィールドの区切り文字を上書きします |
HasFormula は通常の値では false になり、FormulaTextAvailable は Formula に信頼できるテキストが含まれる場合にのみ 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 の選択
1 つのアプリケーション パスで複数のコールバック駆動型形式を受け入れる必要がある場合は TXLSForwardReader を、XLSX 固有のレイアウトと並列ワークシート イベントには TXLSDirectReader を、同じ共有デコード セマンティクスをプル駆動の行反復で利用する場合には TXLSRowCursor を使用します