HotXLS Docs

概要

HotXLS Logo
HotXLS Excel Read/Write Library は、Delphi & C++Builder 向けの高性能 Excel 読み書きコンポーネントです Microsoft Excel や Office をマシンにインストールすることなく、新しい Excel スプレッドシートを作成したり、 既存の XLS および XLSX ワークブックを読み取ったり変更したりすることができます
HotXLS は完全に Object Pascal で記述されており、バイナリおよび OOXML レベルで Excel ファイルを直接読み書きします そのため COM/OLE オートメーションのオーバーヘッドがなく、Office のライセンスや存在への依存もありません HotXLS は Delphi および C++Builder XE5 から 13 Florence をサポートしています
クラシック XLS のカラーフォーマットは意図的にパレットベースのままとなっています。ThemeColor / TintAndShade の設計判断については Classic XLS カラーモデルを参照してください

デュアルファサードアーキテクチャ

HotXLS は、レガシー XLS コードと新しい XLSX コードがリファクタリングなしに共存できるよう、 2 つの並行するファサードユニットを公開しています
lxHandle Excel 97–2003 BIFF8 形式(.xls)のプライマリファサード。HTML、RTF、CSV、TSV エクスポートも含みます。既存のすべてのユーザーコードはこのユニットをそのまま使用し続けることができます。エントリポイント: TXLSWorkbookTXLSWorksheetIXLSWorkbookIXLSRange
lxHandleX Excel 2007+ OOXML 形式(.xlsx)および OpenDocument Spreadsheet (.ods)の読み書き用プライマリファサード。XLSX 固有の動作が BIFF コードパスに後付けされないよう、 独自のワークブックおよびワークシート型を提供します。エントリポイント: TXLSXWorkbookTXLSXWorksheetTXLSXCell
両ファサードは同じ数式エンジン、同じ Unicode サポートレイヤー、同じエクスポートパイプラインを共有しています lxHandleX が公開するクラス階層の全体については XLSX ファサード概要を参照してください

クイックスタート

以下のコードスニペットは、1 つのワークシートを持つワークブックを作成し、 セルに値を書き込む最小限のコードを示しています。

クラシック XLS(lxHandle

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // ワークシートを追加して名前を付ける
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // A1 記法を使ってセルに値を書き込む
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // 基本的な書式を適用する
  ws.Range['A1'].Font.Bold := True;
  ws.Range['A1'].Interior.Color := clYellow;

  Book.SaveAs('output.xls');
end;

XLSX(lxHandleX

uses lxHandleX;

var
  Book: TXLSXWorkbook;
  ws:   TXLSXWorksheet;
  cell: TXLSXCell;
begin
  Book := TXLSXWorkbook.Create;
  try
    ws := Book.Sheets.Add('Sheet1');

    // 文字列と数値を書き込む
    ws.Cells[1, 1].Value := 'Product';
    ws.Cells[1, 2].Value := 'Price';
    ws.Cells[2, 1].Value := 'Widget';
    ws.Cells[2, 2].Value := 9.99;

    // 通貨の数値書式を適用する
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
両ファサードを 1 つのデモプロジェクトで網羅する広範なウォークスルーについては、 API ツアーデモを参照してください

機能

ファイル I/O とストリームのサポート

既存の Excel ファイルの読み取り、新規または既存の Excel ファイルの書き込み、 クラシック XLS パスワード保護および XLSX 暗号化保存ワークフローの処理、 そしてワークブック全体を読み込まずに XLS および XLSX ファイルやストリームからシート名を素早く一覧表示する機能を提供します IXLSWorkbook.OpenCSV を通じて CSV をワークブックとして開くことがサポートされています

セル値と数式

数値、文字列、日付/時刻、ブール値、数式など、すべてのネイティブ Excel 型のセル値を読み書きできます 組み込みの計算エンジンは、クラシック XLS と XLSX の両ワークブックで数式を評価し、以下をサポートします
  • テキスト関数(LEFTMIDTRIMSUBSTITUTE、…)
  • 日付および営業日関数(DATENETWORKDAYSWORKDAY、…)
  • エンジニアリングおよび基数変換関数(BIN2DECHEX2DEC、…)
  • ビット演算関数(BITANDBITORBITXOR、…)
  • 統計および集計関数(AVERAGESUMIFCOUNTIFS、…)
  • 数学関数(ROUNDMODPOWER、…)
OnUserFunction コールバックにより、実行時にカスタムまたはサポートされていないワークシート関数を処理できます シグネチャと例については OnUserFunction コールバックを参照してください
数式評価の例

セルの書式設定

セルの外観属性への完全なアクセス:
  • フォント — 名前、サイズ、色(RGB またはテーマカラー + ティント)、太字、斜体、下線、 取り消し線、上付き、下付き、シャドウ、アウトライン
  • 配置 — 水平・垂直配置、テキストの向き(角度)、インデントレベル、 折り返し、縮小して表示、読み取り順序(RTL/LTR)
  • 罫線 — 4 辺すべてと対角線、線のスタイル、太さ、RGB / テーマカラー
  • 塗りつぶし(フィル) — 単色塗りつぶし、パターン塗りつぶし、TintAndShade を含む テーマカラー対応の前景色および背景色
  • 数値書式 — 日付、時刻、通貨、パーセンテージ、指数表記用の組み込みおよびカスタム書式文字列
  • コメント / 注釈 — セルコメントの追加、読み取り、スタイル設定

範囲操作

IXLSRange(クラシックファサード)と TXLSXRange(XLSX ファサード)は、 豊富な範囲操作を提供します
  • セルの結合・結合解除、任意のセルの結合領域へのアクセス
  • シフト方向制御を伴う範囲のコピー、移動、挿入、削除
  • アウトライン/折りたたみビュー用の行または列のグループ化・グループ解除
  • セルの内容に合わせた行の高さと列の幅の自動調整
  • 組み込みの名前付きセルスタイルの適用(ApplyBuiltinStyle
  • 複数領域の選択(TXLSWorksheet.SelectAreas
  • バッチセル処理のための ForEachCell 反復コールバック

ワークシート機能

ワークシートレベルの制御には以下が含まれます:
  • シート名、タブの色、表示設定(非表示 / 完全非表示)、インデックスベースのナビゲーション
  • 権限単位での粒度を持つシート保護、ワークブックレベルの保護
  • ウィンドウ枠の固定、分割ウィンドウ、スクロール位置
  • 条件付きオートフィルターの範囲と抽出条件、リストデータ検証ルール
  • 条件付き書式:カラースケール(2 色および 3 色)、データバー、アイコンセット
  • ワークシート全体でのテキストの検索と置換
  • 表示オプション:グリッド線の色、数式表示モード、ゼロの表示、見出しの表示、 右から左への表示、アウトライン記号の表示、ズームレベル
  • 構造化テーブル(TXLSTable / TXLSXTable):ヘッダー行と縞模様行を持つ Excel テーブルの追加、アクセス、スタイル設定
  • グラフ:TXLSWorksheetsAddChartSheet および TXLSXChart を通じた グラフシートと埋め込みグラフの追加

ハイパーリンクと名前付き範囲

IXLSHyperLinks を通じてハイパーリンク(URL、mailto、ワークブック内セル参照)を追加・読み取りできます IXLSNames / TXLSXDefinedNames を通じて、ワークブックおよびワークシートスコープで 名前付き範囲を定義・解決できます。名前付き範囲は数式で使用でき、 RefersToRange でセル範囲に逆解決できます

画像と図形

TXLSShapes.AddPicture / TXLSXWorksheet.AddImage を使用して、 ラスター画像(BMP、JPG、PNG、GIF)をワークシートに埋め込みます TXLSShapes.AddTextBox を通じてクラシック XLS にスタンドアロンのテキストボックスを作成します BIFF8 描画で Excel が作成した OfficeArt コネクターおよびソルバーのルールを保持し、 高度な描画ワークフロー向けに TXLSShape.OfficeArtOptions で生の図形 FOPT オプションを公開します

ページ設定と印刷

IXLSPageSetup を通じて印刷レイアウトへの完全なアクセス:
  • 用紙サイズ(A4、Letter、Legal など多数、PaperSize を参照)
  • 向き(縦 / 横)、余白、水平・垂直中央揃え
  • Excel 書式コード付きのヘッダーおよびフッター文字列(太字、斜体、ページ番号、日付など、 ヘッダー/フッター書式コードを参照)
  • 手動の水平・垂直改ページ
  • ページ数に合わせた縮小印刷、拡大縮小率、印刷範囲、印刷タイトル(行/列の繰り返し)
  • 下書き品質、白黒印刷、グリッド線の印刷、見出しの印刷、メモの印刷

エクスポート形式

ワークブック全体、個別ワークシート、または任意のセル範囲を以下の形式にエクスポートできます:
  • HTML — プレビューやメールワークフロー用の完全なドキュメントまたはインラインテーブルフラグメント TXLSHTMLExport および TXLSXHtmlExportOptions で制御可能
  • RTF — ワードプロセッサへのインポート用リッチテキスト
  • CSV — 区切り文字とエンコードを設定可能なカンマ区切り値
  • TSV — タブ区切り値
  • ODSlxHandleX ファサードによる OpenDocument Spreadsheet

データベースとグリッドのエクスポート

TDataToXLS または TGridToXLS コンポーネントを使用して、 TDataSet 互換のデータセットや TDBGrid を直接 Excel、HTML、RTF にエクスポートします どちらのコンポーネントも AfterCellAfterRowAfterTitleAfterGroup イベントを発生させてきめ細かな出力制御を可能にし、 複数レベルのグループ化フィールドをサポートします

VBA プロジェクトの保持

HotXLS は、マクロ有効ワークブックのラウンドトリップ時に VBA プロジェクトのペイロードを保持します TXLSVBAProject および TXLSVBAModule を通じて読み取り専用のモジュール検査が可能です IXLSWorkbook.HasVBAProject でペイロードを検出し、 LoadVBAProjectFromFile / SaveVBAProjectToFile でファイル間での転送ができます

Unicode と国際化テキスト

すべての文字列処理は Unicode ネイティブです。HotXLS は、CJK、アラビア語、ヘブライ語、タイ語、 その他のスクリプトを含むあらゆる言語で作成された Excel ファイルを、 正しい双方向テキストと読み取り順序サポートにより読み書きします
Unicode 文字サポートの例

ピボットテーブル(クラシック XLS)

TXLSWorksheet.AddPivotTable を使用してソース範囲からピボットテーブルを作成し、 フィールドの配置とデータフィールドの数値書式を設定し、 TXLSWorksheet.PivotTables を通じてピボットモデルを検査できます フィールドとフィルターの詳細については Classic XLS ピボットテーブル API を参照してください

利点

No Office dependency XLS および XLSX ファイルをバイナリレベルで直接読み書きします。Microsoft Excel や Office を インストール、ライセンス取得、または実行する必要はありません。これにより COM/OLE オートメーションの オーバーヘッドが排除され、Office 相互運用によるスレッド制限を回避し、 デスクトップ Office のインストールが非現実的なサーバーサイドやサービスコンテキストでも HotXLS を使用できます
High performance BIFF8 および OOXML パーサーは、ホットパスで中間 XML DOM 割り当てを行わない ネイティブ Object Pascal で記述されています。数十万行を持つ大規模なワークブックも 低いピークメモリで読み書きできます。共有文字列の重複排除と共有数式の圧縮が 自動的に適用され、ファイルサイズを小さく保ちます
OLE migration path クラシックファサードの API サーフェス(ワークブック、ワークシート、範囲、フォント、罫線、 塗りつぶし、ページ設定)は、OLE オートメーションで馴染みのある Excel オブジェクトモデルを ほぼ踏襲しています。これにより、既存の OLE ベースのプロジェクトの移行が容易になります COM 呼び出しを HotXLS 呼び出しに置き換え、Office への依存を削除し、 ネイティブパフォーマンスを得ることができます
Dual-facade design レガシー XLS コードは lxHandle に対して変更なくコンパイルおよび実行し続け、 新しい XLSX コードはより豊富な lxHandleX ファサードを使用します 一度に 1 つのファイル形式を移行することが安全かつ段階的に行えます
Formula engine included 組み込みのマルチパス計算エンジンが、Excel による再計算を必要とせずに 最も一般的なワークシート関数を処理します。カスタム関数は OnUserFunction コールバックを通じて処理されます
Easy to use ドロップイン Delphi コンポーネント(TDataToXLSTGridToXLS)は、 一般的なエクスポートタスクにコードを必要としません。フルーエントな範囲 API は A1 記法、R1C1 記法、ゼロベースの行/列インデックスをサポートします
Thread-safe file I/O 共有 Office プロセスが存在しないため、複数の TXLSXWorkbook インスタンスを 同期なしに独立したスレッドで並行して作成・保存でき、 HotXLS をマルチスレッドレポート生成サーバーに適したものにしています

互換性

HotXLS は以下の RAD Studio バージョンと互換性があります:
Delphi XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
C++Builder XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
Target platforms Windows 32 ビットおよび 64 ビット
Excel file formats XLS(BIFF8、Excel 97–2003)、XLSX(OOXML、Excel 2007+)、ODS(OpenDocument 1.2)
Export-only formats HTML、RTF、CSV、TSV

関連項目