HotXLS ドキュメント

直接リーダー/ライター API

TXLSDirectReader と TXLSDirectWriter は、完全なワークシート グリッドをメモリに保持せずに XLSX パッケージを処理するため、シートを記述する API 呼び出しは、対応するストリーミング フェーズの前または最中に行う必要があります

ライターのライフサイクルとセル値

TXLSDirectWriter.BeginFile または BeginStream はパッケージを開始し、シート メソッドは一度に 1 つのワークシートを定義し、 Finish は最終パッケージを確定します

Scalar cellsWriteString、 WriteRichString、 WriteNumber、 WriteBoolean、 WriteDateTime、および WriteError
Formula cellsWriteFormula、 WriteFormulaNumber、 WriteFormulaString、 WriteFormulaBoolean、 WriteFormulaDateTime、および WriteFormulaError は、呼び出し側が提供するキャッシュされた結果を受け入れます
Shared stringsUseSharedStrings は、パッケージ レベルの文字列の重複排除を有効にします
StatisticsCellCount は、出力されたセルの数を報告します
PanesFreezePanes(ColSplit, RowSplit) は、指定した 1 から始まる列と行にウィンドウ枠の固定を出力します

行と列は、公開ライター サーフェスでは 1 から始まり、ワークシートの順序どおりに前方で指定する必要があります

ワークシート パッチのライフサイクル

BeginPatch は、触れていないパッケージ パーツを保ちながら、1 つのワークシートを置き換えるか新しいワークシートを挿入します。初期化に失敗すると、ソース アーカイブとソース ストリームは直ちに解放されます。対象は、ワークシートの欠落、必須パッケージ パーツの欠落、無効なアーカイブ、出力先の作成失敗です。ソース ファイルと呼び出し側が所有するテンポラリ登録の後始末は呼び出し側の責任のままです。解放されたハンドルのおかげで、それらのソースを取り除いたり解放したりできます

Close と破棄は、アクティブな出力先がなくても、パッチの終了処理が例外を上げても、ソース ハンドルを解放します。出力先の置き換えに失敗しても、ステージングされた出力は確認できるように保持され、初期化失敗の後でも、ライターは次のパッチや通常のファイル操作を開始できます

再利用可能なスタイル

AddCellStyle は、不変のパッケージ レベルのスタイル ハンドルを登録し、 CloneCellStyle は、ワークシートの行を保持せずに新しいハンドルを導出します

定義名とハイパーリンク

AddDefinedName、 AddLocalDefinedName、 AddDefinedRange、および AddLocalDefinedRange は、パッケージの確定前にワークブックまたはシート ローカルの名前を追加します

AddHyperlink、 AddHyperlinkRange、 AddInternalHyperlink、および AddInternalHyperlinkRange は、1 つのセルまたは範囲に対して外部リレーションシップまたは内部シート位置を出力します

データ入力規則

AddDataValidation と AddDataValidationSqRef は完全な規則サーフェスを公開し、 AddListValidation、 AddWholeNumberValidation、 AddDecimalValidation、 AddDateValidation、 AddTimeValidation、 AddTextLengthValidation、および AddCustomValidation は型付きヘルパーを提供します

条件付き書式

AddConditionalFormat、 AddConditionalFormatExpression、 AddConditionalFormatContainsText、 AddConditionalFormatNotContainsText、 AddConditionalFormatBeginsWith、 AddConditionalFormatEndsWith、 AddConditionalFormatTop10、 AddConditionalFormatAboveAverage、 AddConditionalFormatDuplicateValues、 AddConditionalFormatUniqueValues、 AddConditionalFormatContainsBlanks、 AddConditionalFormatNotContainsBlanks、 AddConditionalFormatContainsErrors、および AddConditionalFormatNotContainsErrors はスカラー規則を追加します

AddConditionalFormatDataBar、 AddConditionalFormatColorScale2、 AddConditionalFormatColorScale3、および AddConditionalFormatIconSet は視覚的な規則を追加します。 ClearConditionalFormats は、現在のシートの保留中の規則を削除します

オートフィルターとテーブル

AddAutoFilterValue、 AddAutoFilterDateGroup、および AddAutoFilterSortCondition は、ワークシートのフィルターを設定します

AddTable はテーブル パーツを作成し、 AddTableFilterValue、 AddTableFilterDateGroup、および AddTableSortCondition はそのフィルターと並べ替え状態を設定します

保護と改ページ

ProtectSheet、 UnprotectSheet、 AddProtectedRange、および ClearProtectedRanges は、ワークシートの保護を設定します。 ProtectWorkbook と UnprotectWorkbook は、ワークブックの構造とウィンドウのロックを設定します

AddHorizontalPageBreak と AddVerticalPageBreak は、現在のワークシートに手動改ページを出力します

直接リーダーのストレージ診断

TXLSDirectReader.SharedStringMemoryLimit は、デコードされた共有文字列メモリの上限を設定します。 SharedStringsOnDisk は一時的なインデックス付きストレージへの移行を報告し、 SharedStringCount は読み込まれたエントリ数を報告し、 ParallelDiag は境界付きの並列パーサー診断を公開します

リーダーの射影と数式状態

FirstRow、 LastRow、 IncludeColumn、 ClearColumnProjection は、値・数式・リッチ テキストの割り当ての前に、行と 1 から始まる列の選択をワークシート パーサーにプッシュします

IncludeFormulaText は既定で true です。無効にすると、キャッシュされた値、座標、スタイル、 HasFormula は保持されますが、 FormulaTextAvailable が false になり、 Formula は空のままになります

行カーソル

TXLSRowCursor.Open は、XLS、XLSX、XLSM、ODS、CSV、TSV のファイルまたはストリームを受け付けます。ZIP の自動検出は、シートを開く前に ODS パッケージと Open XML ワークブックを区別します

SelectSheet と SelectSheetByName はワークシートを選択します。 SheetCount、 SheetNames、 SheetIndex、 RowIndex、および Eof は走査状態を公開し、 SharedStringMemoryLimit は直接リーダーと同じ境界付き共有文字列ポリシーを適用します

FirstRow、 LastRow、 IncludeColumn、 ClearColumnProjection は、すべてのカーソル形式で同じ 1 から始まるフィルターを使用します。渡すオプションは FindFirst と EOF の間で変更できませんが、EOF、シート選択、クローズの後は再び変更可能になります

各 TXLSRowCursorCell は HasFormula を FormulaTextAvailableとは独立して報告します。クラシック XLS は、利用できないトークン テキストを主張せずに数式の有無とキャッシュされた結果を公開し、 IncludeFormulaText は蓄積前に XLSX と ODS の数式テキストを抑制できます

ODS の走査は 1 つの物理行テンプレートを保持し、繰り返し行ブロックを要求された区間にクリップし、繰り返しスパン内の選択された列間を直接ジャンプし、カバーされたセルを値として返さずに先へ進み、無効またはグリッド上限を超える繰り返し回数を OnSkippedRecord

State は xrcsClosed、 xrcsBeforeFirst、 xrcsActive、 xrcsEof、 xrcsCancelled、 xrcsFaultedを区別します。 Cancel は冪等で、現在の行を無効化し、ソースを保持したままアクティブなワークシート ストリームを解放するため、明示的なシート選択で新しいパスを開始できます

ストリーム オーバーロードは既定で xsoBorrowedとなり、クローズ時に呼び出し側の初期位置を復元します。正常にオープンできた後に所有権を移す xsoOwned も指定できます。オープンに失敗しても呼び出し側の所有権は消費されません

CurrentRowView は現在の行配列をコピーせずに借用し、アクセスのたびにジェネレーションをチェックします。カーソルの前進、選択、キャンセル、クローズ、破棄でビューは無効化され、その後のアクセスでは EXLSRowCursorViewInvalidated が発生します

PeakRowBufferedBytes は、直近の Open 以降の、1 論理行に対して保持されるセル レコード、管理ペイロード、リッチ テキスト、フォーマット バックエンド データの単調増加する推定値です。正確なヒープ会計ではなく、メモリ上限回帰の診断を目的としています

SheetPassesStarted は、成功したワークシート バックエンドの開始回数を数えます。コールバック ファサードでシート名を確認したりシートをスキップしたりしても、ワークシート パートは開かれません

フォワード コールバック アダプター

TXLSForwardReader は、XLS、XLSX、ODS、CSV、TSV のデコードを TXLSRowCursorに委譲し、現在行の各セルを OnCell コールバックに変換します。行の境界、列の射影、数式状態、リッチ テキスト、パスワード、スキップ レコード、ストリーム位置、バッファ上限の各契約は同じままです

PeakRowBufferedBytes と SheetPassesStarted は、コールバック サーフェスにも共有カーソル診断を公開します。クラシック XLS ではさらに ClassicBytesRead と ClassicPeakBufferedBytes

リーダーのイベントとレコード型

リーダーと行カーソルはオプションのコールバックとプレーンなレコードを公開し、すべて lxDirectReadで宣言されています。すべてのコールバックは同じ形をしています。レコードがストリーミングされた 1 項目を記述し、 Abort を設定すると走査が停止します(シート イベントはさらに SkipSheetを受け付けます)

CellsOnCell (型 TXLSDirectCellEvent)はセルごとに TXLSDirectCell を渡します。 Kind (TXLSDirectCellKind: xdkEmpty、 xdkNumber、 xdkString、 xdkBoolean、 xdkDate、 xdkError)が、値が入るフィールドを選択します。リッチ テキストは TXLSDirectRichText エントリを保持する TXLSDirectRichTextRun として渡されます。各エントリには TXLSDirectRichColor (種類 TXLSDirectRichColorKind)、 TXLSDirectRichUnderline、 TXLSDirectRichVertAlignがあり、オプションで TXLSDirectPhoneticProperties と TXLSDirectPhoneticRun データも含まれます
Sheet framingOnSheet (TXLSDirectSheetEvent)は、セルが解析される前にワークシート全体をスキップできます。 OnSkippedRecord (TXLSDirectSkippedEvent)は、不正または切り詰められた内容をレコード ID と理由付きで報告します
Sheet layoutOnDimension、 OnSheetFormat、 OnColumn、 OnRow、 OnMerge、および OnPane は、 TXLSDirectDimension、 TXLSDirectSheetFormat、 TXLSDirectColumn、 TXLSDirectRow、 TXLSDirectMerge、 TXLSDirectPane の各レコードを渡します。ペイン状態は TXLSDirectPaneState (xdpsSplit、 xdpsFrozen、 xdpsFrozenSplit、 xdpsUnknown)を使用します
Cursor stateTXLSRowCursor.State は TXLSRowCursorState (xrcsClosed、 xrcsBeforeFirst、 xrcsActive、 xrcsEof、 xrcsCancelled、 xrcsFaulted)です。 Open のストリーム オーバーロードは TXLSStreamOwnership (既定はxsoBorrowed 、所有権を移すには xsoOwned )を取り、 CurrentRowView は借用ビュー IXLSRowCursorView を返します。その Valid プロパティがアクセスを保護し、 ValueByCol は借用した行の 1 セルをコピーせずに読み取ります。カーソルが前進するとビューは無効化されます

ライターのパラメータ型とスタイル型

ライターの型付きヘルパー(lxDirectWrite)はレコードと列挙を受け付けるため、呼び出しはアロケーション フリーのままです。 WriteRichString は TXLSDirectRichTextを取り、 AddCellStyle は TXLSDirectCellStyle からパッケージ レベルのスタイルを構築します。その配置(TXLSDirectHorizontalAlignment、 TXLSDirectVerticalAlignment)、下線(TXLSDirectUnderline)、塗りつぶしパターン(TXLSDirectFillPattern)、罫線の各辺(TXLSDirectStyleBorder を伴う TXLSDirectBorderSide)は OOXML のスタイル モデルを反映します。条件付き書式は TXLSDirectConditionalFormat / TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue と TXLSDirectCfValueKind を伴う TXLSDirectIconSetTypeを、データ入力規則は TXLSDirectDataValidationを、テーブルは TXLSDirectTableを、ハイパーリンクは TXLSDirectHyperlinkを、定義名は TXLSDirectDefinedNameを、差分スタイルは TXLSDirectDxfStyleを、コメントは TXLSDirectCommentを、画像は TXLSDirectImage を伴う TXLSDirectImageFormatを、グラフは TXLSDirectChart と TXLSDirectChartSeries を伴う TXLSDirectChartTypeを、結合は TXLSDirectMergeRangeを、保護範囲は TXLSDirectProtectedRangeを、シート保護は TXLSDirectSheetProtectionOptions の集合 TXLSDirectSheetProtectionOptionを、オートフィルターの並べ替え状態は TXLSDirectSortStateを、列オプションは TXLSDirectColumnOptionを、ページ ジオメトリは TXLSDirectPageMargins レコードを渡します

TXLSDirectNeedRow = procedure(Sender: TObject; RowIndex: Integer;
  var Eof: Boolean) of object;

function XLSDirectColName(Col: Integer): WideString;
function XLSDirectParseRef(const Ref: WideString;
  out Col, Row: Integer): Boolean;
function XLSDirectPasswordHash(const Password: WideString): WideString;
      

OnNeedRow はアプリケーションから行をプルします。サプライヤーは行のセルをライターに直接書き込んで Eof = Falseのままにするか、 Eof = True で枯渇を宣言してループを停止します。ヘルパーは座標と保護プリミティブの間の変換を行います。 XLSDirectColName は 0 から始まる列を A1 の英字として表現し、 XLSDirectParseRef は A1 セル参照を解析し、 XLSDirectPasswordHash はシート保護レコードが格納する従来のパスワード ハッシュを計算します

関連項目