XLSX ファサードの概要 (lxHandleX)
lxHandleX は、Excel 2007+ (.xlsx) および OpenDocument Spreadsheet (.ods) ワークブックのワークフロー専用のファサード ユニットです。元の lxHandle ファサードと共存するため、既存のコードを変更することなくそのまま動作させることができます
lxHandle— Excel 97-2003 BIFF フォーマット (.xls)、HTML、RTF、CSV、および TSV エクスポート用のプライマリ ファサードです。既存のすべてのユーザー コードは、このユニットを引き続き変更なしで使用しますlxHandleX— Excel 2007+ OOXML フォーマット (.xlsx) および ODS 読み書きワークフロー用のプライマリ ファサードです。XLSX 固有の動作が BIFF コード パスに後付けされないように、独自のワークブックおよびワークシート型を提供し、ODS インポート、エクスポート、およびOpen、SourceFormat、TODSExportOptionsを介した自動 ODS 検出を公開します
クラス階層
XLSX ファサードは以下のクラスを公開します
type
TXLSXWorkbook = class // top-level workbook with SaveAs / Open
TXLSXHtmlExportOptions = class // HTML document, style, BOM, and table class options
TODSExportOptions = class // ODS export options for generator, chart, and image output
TXLSXSheets = class // worksheet collection on the workbook
TXLSXFonts = class // workbook-level font palette
TXLSXFont = class // single font descriptor
TXLSXFills = class // workbook-level fill palette
TXLSXFill = class // single fill (pattern + fg/bg color)
TXLSXBorders = class // workbook-level border palette
TXLSXBorder = class // four edges + diagonal border
TXLSXNumberFormats = class // workbook-level custom format codes
TXLSXDefinedNames = class // workbook-level named ranges
TXLSXWorksheet = class // single worksheet with cells and decorations
TXLSXCells = class // cell collection on the worksheet
TXLSXCell = class // single cell (value, formula, *Index style refs)
TXLSXRange = class // rectangular worksheet range wrapper
TXLSXMergedCells = class // merged-range collection
TXLSXHyperlinks = class // hyperlink collection
TXLSXComments = class // cell-comment collection
TXLSXImages = class // image collection (drawings + media)
TXLSXConditionalFormats = class // conditional formatting rules
TXLSXDataValidations = class // data-validation rules
TXLSXTables = class // Excel-style table collection
TXLSXCharts = class // chart collection (anchored or full-page)
TXLSXChart = class // single chart (column / bar / line / pie / scatter / bubble / radar)
TXLSXChartSeries = class // chart series with category, value, and bubble-size ranges
TXLSXTextBox = class // standalone worksheet drawing text box
TXLSXRichText = class // per-run rich-text payload for cells
TXLSXAlignment = class // cell alignment / wrap / indent / rotation
TXLSXExternalLinks = class // external workbook link collection
TXLSXExternalLink = class // single external workbook reference (Target URL + SheetNames)
これらのクラスは、lxHandle.TXLSWorkBook および lxHandle.TXLSWorksheet から独立しています。両方のフォーマットを必要とするアプリケーションは、両方のファサードを並行して使用できます
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
クイック スタート
XLSX ファサードは、BIFF ファサードと同じ呼び出し形式の規則に従います — ワークブックの SaveAs / Open、ワークシート コレクションの Sheets.Add / Sheets[i]、およびセル コレクションの Cells.Item[Row, Col].Value です。以下の例では、現在サポートされているすべての機能を使用する小さなワークブックを作成します
uses lxHandleX;
var
wb: TXLSXWorkbook;
ws: TXLSXWorksheet;
bold, yellow, box, currency: Integer;
begin
wb := TXLSXWorkbook.Create;
try
bold := wb.Fonts.Add('Calibri', 12, True, False);
yellow := wb.Fills.AddSolid($FFFFFF00);
box := wb.Borders.AddBox(xlsxBorderThin);
currency := wb.NumberFormats.Add('"$"#,##0.00');
ws := wb.Sheets.Add('Demo');
ws.Cells.Item[1, 1].Value := 'Hello';
ws.Cells.Item[1, 1].FontIndex := bold + 1;
ws.Cells.Item[1, 2].Value := 123.45;
ws.Cells.Item[1, 2].NumberFormatIndex := currency + 1;
ws.Cells.Item[2, 1].Value := Now; // tagged as date
ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
ws.Cells.Item[3, 1].FillIndex := yellow + 1; // highlight cell
ws.Cells.Item[3, 2].BorderIndex := box + 1; // boxed cell
ws.ColWidth[1] := 24;
ws.RowHeight[1] := 28;
ws.MergeCells(4, 1, 4, 3);
ws.Range['A8:C10'].Merge(True); // merge across rows
ws.AddHyperlink(5, 1, 'https://www.loslab.com', 'Visit losLab');
ws.AddComment(5, 2, 'Important note', 'Kevin');
ws.AddImageFromFile(6, 1, 'logo.png');
ws.AddConditionalFormat('B1:B10', xlsxCfOpGreaterThan, '100');
ws.AddListValidation('C1:C5', 'Yes,No,Maybe');
wb.DefinedNames.Add('SalesData', 'Demo!$A$1:$B$10');
wb.SaveAs('demo.xlsx');
finally
wb.Free;
end;
end;
サポートされている機能
- セル値: 数値、ブール値、文字列、日付、数式
- 書き込みパスで重複排除を行う共有文字列テーブル (
xl/sharedStrings.xml) - ワークブック レベルのスタイル パレット —
Workbook.Fonts、Fills、Borders、およびNumberFormats— に加え、セルごとのFontIndex/FillIndex/BorderIndex/NumberFormatIndex。SaveAs は実際の<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>ブロックを出力し、Open はこれらを解析して復元するため、名前/サイズ/太字/斜体/色、塗りつぶしパターン、境界線のエッジ、カスタム数値書式がすべてラウンドトリップ後も保持されます Worksheet.ColWidth[Col]による列ごとの幅、およびWorksheet.RowHeight[Row]による行ごとの高さ (ワークシートの<cols>ブロックと<row>ごとのht属性)- インデックス
XlsxXfIndexDateにある組み込み日付cellXf。TDateTime値は自動的にタグ付けされます - 結合されたセル (
<mergeCells>)。行をまたぐ Excel スタイルの結合を行うためのTXLSXRange.Merge(True)を含みます Worksheet.Range、RCRange、UsedRange、EntireRow、およびEntireColumnを介したワークシート範囲。バッチ値、数式、SetArrayFormula、スタイル インデックス、数値書式、境界線、保護フラグ、自動フィット、結合、オフセット、サイズ変更、Sortマルチキー ソート、ApplyBuiltinStyle組み込みセル スタイル、コピー/移動ヘルパー、行全体/列全体の挿入/削除ヘルパー、および選択範囲の HTML エクスポートについては、TXLSXRange を参照してください- 外部 URL 用のワークシートごとの関係 (rels) にサポートされたハイパーリンク (
<hyperlinks>) - Excel でバルーンがレンダリングされるようにするための VML 図形描画 (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) 付きのセル コメント Worksheet.Imagesを介した埋め込み画像 (PNG / JPEG / GIF / BMP)。xl/media/imageN.<ext>とシートごとの描画 XML および関係に書き込まれますWorksheet.AddTextBoxを介したスタンドアロン描画テキスト ボックス。セル コメント의 代わりにテキスト本体を持つワークシート描画シェイプとして書き込まれ、直接アンカー ルックアップおよび範囲削除ヘルパーを備えていますWorkbook.DefinedNamesを介したワークブック レベルの名前付き範囲 (SheetIndexによるワークブック スコープまたはシート スコープ)Workbook.CalculateおよびWorksheet.Calculateによる数式計算。先頭の等号数式、セルおよび範囲参照、参照される数式セル、シート間参照、名前付き範囲、およびサポートされているテキスト、日付、稼働日、エンジニアリング/基数変換、ビット演算、統計、集計、および数学の関数について、XLS 数式パーサーおよびエバリュエーターを共有します。カスタムまたはサポートされていない関数を解決するには、Workbook.OnUserFunctionまたはWorkbook.OnUserFunctionExを使用します- ドロップダウンの
AddListValidation(Range, Items)ショートカットを含む、ワークシートごとの条件付き書式 (Worksheet.ConditionalFormats) およびデータ入力規則 (Worksheet.DataValidations) - 行/列のアウトライン グループ (
RowOutlineLevel,ColOutlineLevel)、非表示状態 (RowHidden,ColHidden)、および折りたたまれたグループ状態 (RowCollapsed,ColCollapsed) Worksheet.FreezePanes(Row, Col)によるウィンドウ枠の固定- ページ設定 — 6 つの余白プロパティ、用紙サイズ、方向、ページ倍率、横幅に合わせてフィット/縦幅に合わせてフィット、および
HeaderText/FooterText。xlsxPaperLetter、xlsxPaperA4、xlsxPaperA3、xlsxPaperLegalなどの名前付きxlsxPaper*定数をPaperSizeに割り当てることができます - オートフィルター (
Worksheet.SetAutoFilter) - スタイル情報および tableColumns を持つ Excel スタイルのテーブル (TXLSXTable)
ファサード サブコレクション API
ファサード コレクション クラスは、条件付き書式、データ入力規則、名前付き範囲、画像、およびテーブルを管理します。各コレクションのコア メンバーは以下のとおりです
- TXLSXConditionalFormats: 条件付き書式ルールを公開します。プロパティ:
Countメソッド:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations: 数据入力規則を公開します。プロパティ:
Countメソッド:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames: 定義された名前 (名前付き範囲) を公開します。プロパティ:
Countメソッド:DeleteByName,FindByName,IndexOfName - TXLSXImages: 埋め込み画像を公開します。プロパティ:
Countメソッド:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables: Excel テーブルを公開します。プロパティ:
Countメソッド:AddExisting,DeleteByName,FindByName,IndexOfName
サポートされている機能
docProps/core.xml+docProps/app.xmlに書き込まれるドキュメント プロパティ (Workbook.Title、Author、Subject、Keywords、Description、LastModifiedBy、Companyなど)Worksheet.Protect/Workbook.ProtectWorkbookによるワークシート/ワークブックのパスワード保護 (レガシー 16 ビット ハッシュ)。およびSaveAsEncryptedによる Excel 互換の AES パスワード保護された保存 (利用可能な場合は AES-NI アクセラレーションを使用し、そうでない場合はポータブル ソフトウェアのフォールバックを使用)。復号サポートが実装されるまで、暗号化パッケージに対してOpenEncryptedは例外を発生させますWorkbook.LoadVbaProjectFromFile/VbaProjectを介した VBA プロジェクトの保存。バイト データは変更されずにラウンドトリップします。有効なvbaProject.binペイロードはWorkbook.ParsedVBAProjectを介して検査することもできますWorksheet.AddChartを介してワークシート上にアンカー配置されるか、またはWorkbook.AddChartSheet(Name, Type, Title)を介して専用のグラフ シート上でフルページ表示される、TXLSXChart を介したグラフ — 縦棒 / 横棒 / 折れ線 / 円 / 面 / ドーナツ- 実行 (run) ごとにフォントの書式設定を行う TXLSXRichText を介したリッチテキスト セル。共有文字列テーブルを介してラウンドトリップします
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")を介した内部ハイパーリンク アンカー (rels 関係は不要)- ワークシート上のセル範囲コピー/移動/クリア API (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - TXLSXAlignment およびセルごとの
AlignmentIndexを介したセル配置 Worksheet.TabColor/TabColorIsAutoを介したワークシート タブの色- 標準表示、改ページ プレビュー、およびページ レイアウト表示を含む、
Worksheet.Viewを介したワークシート表示モード - 他のワークシートをメモリに保持することなく、各ワークシートをビルドして書き込むストリーミング SaveAs パス (
Workbook.StreamingWrite := True)。行ごとの XML アキュムレータはTXLSWideStringBuilderを使用するため、セル ループは線形に保たれます - 暗号化された XLSX パッケージと、ドキュメントに記載されている部分的な動作にフォールバックするグラフ シートのシート識別を除き、上記のすべてに対するラウンドトリップ
Open - ストリーム ベースのエクスポートおよびインポート: メモリ内または BLOB フィールドで使用するための
SaveAs(Stream)、Open(Stream) - OpenDocument Spreadsheet の読み書き:
Workbook.OpenODSおよび汎用のWorkbook.Openは.odsパッケージをロードでき、Workbook.SaveAsODSおよびSaveAs(..., xlsxOpenDocumentSpreadsheet)は ODS 出力を直接書き込みます。このフォーマットは、サポートされているラウンドトリップにおいて、値、数式、スタイル、リッチテキスト、行/列の寸法、結合、ハイパーリンク、画像、グラフ、名前付き範囲、オートフィルター、条件付き書式、データ入力規則、ウィンドウ枠の固定、ページ設定、ヘッダー/フッター、印刷範囲、改ページ、アウトライン グループ、タブの色、およびシートの非表示状態をカバーします - ODS エクスポート オプション: より軽量なパッケージを作成する際に、ドキュメント ジェネレーター文字列をオーバーライドするか、グラフおよび画像パーツを抑制するために、
TODSExportOptionsをSaveAsODSに渡します - 区切りテキストのインポート:
Workbook.OpenCSV(FileName)およびWorkbook.OpenCSV(Stream)は、区切り文字の検出、BOM エンコーディング検出、RFC 4180 スタイルの引用符、およびオプションの値の型推論を使用して CSV または TSV データをインポートします。Open(FileName)は、.csvおよび.tsvファイルを自動的にインポート プログラムにルーティングします - ワークブック メタデータ スキャン:
Workbook.GetSheetNames(FileName, List)およびWorkbook.GetSheetNames(Stream, List)は、ワークシート XML をロードせずにxl/workbook.xmlから順序付けられたシート名を読み取ります - セル保護:
TXLSXCell.LockedおよびFormulaHidden— シートが保護されている場合に、どのセルが編集可能であるか、またはどの数式を表示するかを制御します - セル内容からの列幅と行高の自動フィット:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - 完全なカスケードを伴う行/列の挿入および削除:
InsertRows,DeleteRows,InsertCols,DeleteCols。副作用は、セル、結合された範囲、ハイパーリンク、コメント、ウィンドウ枠の固定、範囲文字列の参照、テーブル、セルの数式、条件付き書式/データ入力規則の数式、内部ハイパーリンク ターゲット、印刷設定参照、手動改ページ、オートフィルター列の基準、グラフ シリーズ範囲、定義された名前、画像アンカー、およびグラフ アンカーに反映されます - 拡張ページ設定:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - シートの非表示状態:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) およびIsSelected - 手動改ページ:
AddRowBreak,AddColBreak, インデックス ルックアップ, および範囲削除ヘルパー - オートフィルター列の基準: 単一または AND/OR 2 つの基準を持つフィルター ルールを伴う
Worksheet.AddAutoFilterColumn。さらに、直接的な基準のルックアップおよび削除のためのWorksheet.AutoFilterColumns.FindByColIdおよびDeleteByColId(TXLSXAutoFilterColumn) - ワークブック日付ベース:
Workbook.Date1904は、1900 (Windows デフォルト) と 1904 (Mac) の日付エポックを切り替えます - 斜め境界線:
TXLSXBorder.DiagonalUpおよびDiagonalDownで斜線が有効になります。Diagonalエッジにスタイルと色が適用されます - 拡張フォント プロパティ:
TXLSXFont.VertAlign(上付き文字 / 下付き文字),OutlineFont,Shadow,Family,CharSet - 名前付き範囲のメタデータ:
TXLSXDefinedName.HiddenおよびComment - シート表示オプション:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight ResetIndexedColorsを伴う OOXML レガシー インデックス色パレット:Workbook.IndexedColor[0..63]- 外部ワークブックのリンク:
Workbook.ExternalLinks/ TXLSXExternalLink — ターゲット URL + SheetNames メタデータのラウンドトリップ TXLSXFont、TXLSXFill、およびTXLSXBorderEdgeでのテーマ色サポート: 優先順位 (テーマ > インデックス > RGB) を持つColorTheme/ColorIndex/TintAndShadeプロパティ- CSV エクスポート:
Workbook.SaveAsCSV— 4 つのオーバーロード (FileName または Stream × アクティブシート / 明示的な SheetIndex + 区切り文字)、BOM 付き UTF-8、RFC 4180 の引用 - HTML エクスポート:
Workbook.SaveAsHTMLおよびTXLSXRange.SaveAsHTMLは、ワークブック シート全体または選択した矩形領域のみの HTML5 テーブルを書き込みます。オプションのオーバーロードは、完全なドキュメント出力、スタイル出力、BOM 出力、およびテーブル クラス名指定のためにTXLSXHtmlExportOptionsを受け入れます - RTF エクスポート:
Workbook.SaveAsRTF— 4 つのオーバーロード、列幅を持つ RTF 1.6 テーブル、セルごとのフォント書式設定、および符号付き 16 ビット\uN?エスケープを介したフル BMP ユニコード
共有インフラストラクチャ
両方のファサードは低レベルのヘルパー ユニットの共通セットを共有しており、これはスタイル記述子、ハッシュ テーブル、AVL ツリー、ZIP および XML I/O、RGB から HLS への変換、および文字列ビルダーが一度記述されればどちらのパスでも使用されることを意味します。共有ヘルパーには以下が含まれます
lxStyleXf、lxStyleFont、lxStyleColor、lxStyleFill、lxStyleBorder— モダン スタイル記述子lxRgb— RGB / HLS 色変換lxHashTable、lxKeyList、lxAvlTree、lxCols、lxRows— 重複排除コンテナおよび AVL ベースのセル ヒープ ビルディング ブロックlxXmlReader、lxXmlWriter、lxZipArchive— OOXML トランスポート レイヤーlxStrBuilder、lxCacheStream、lxWStream、lxZlibStream— ストリームおよび文字列のアセンブリ ヘルパー