HotXLS ドキュメント

AddChartSheet メソッド

BIFF8 グラフシートをワークブックにプログラムで追加し、新しい TXLSWorksheet タブを返します。以前はグラフシートは TXLSCustomChart を介してロードと保存のラウンドトリップで不透明に保持するだけでしたが、このメソッドは完全なグラフサブストリームを SaveAs(xlExcel97) に直接書き込みます。Excel は結果を要求された種類のグラフタブとして開きます。v2.41.0 以降で使用可能です

TXLSChartType 列挙型

グラフの種類を選択します。ユーザーコードがグラフビルダーユニットを直接インポートしなくて済むよう、lxHandle から再エクスポートされています
type
  TXLSChartType = (
    xlsChartTypeColumn,
    xlsChartTypeBar,
    xlsChartTypeLine,
    xlsChartTypePie);

TXLSChartSeriesInfo レコード

6 パラメーターのオーバーロードの 1 つの系列宣言を保持します。CategoriesValues は A1 形式の範囲文字列です(例: 'Sheet1!$B$2:$B$5'
type
  TXLSChartSeriesInfo = record
    Name        : WideString;
    Categories  : WideString;
    Values      : WideString;
  end;

構文

5 つのオーバーロードがプログレッシブに豊かなグラフシート定義をカバーします
// 1) v2.41.0 — name only; default column chart, no titles, no series.
function AddChartSheet(const Name: WideString): TXLSWorksheet;

// 2) v2.41.0 — name + chart type.
function AddChartSheet(
  const Name : WideString;
  ChartType   : TXLSChartType): TXLSWorksheet;

// 3) v2.41.0 — + chart title.
function AddChartSheet(
  const Name : WideString;
  ChartType   : TXLSChartType;
  const Title: WideString): TXLSWorksheet;

// 4) v2.41.0 — + category-axis title + value-axis title.
function AddChartSheet(
  const Name       : WideString;
  ChartType         : TXLSChartType;
  const Title      : WideString;
  const CatAxisTitle: WideString;
  const ValAxisTitle: WideString): TXLSWorksheet;

// 5) v2.42.0 — + array of series (Name + Categories range + Values range).
function AddChartSheet(
  const Name        : WideString;
  ChartType          : TXLSChartType;
  const Title       : WideString;
  const CatAxisTitle: WideString;
  const ValAxisTitle: WideString;
  const Series      : array of TXLSChartSeriesInfo): TXLSWorksheet;

備考

出力されたグラフサブストリームは BIFF8 フレーミング仕様に従います — BOF (dt=$0020)、Chart / PlotGrowth / Frame / Series / SheetProperties / AxesUsed / AxisParent (POS + カテゴリ軸 + 値軸 + PlotArea + Frame + ChartFormat + グラフ種別レコード + ChartFormatLink + Legend)、EOF。TXLSCustomChart を使用した既存のグラフシートのラウンドトリップは変更されません

系列名バインディング (v2.42.0): 空でない各 Series[i].Name は、系列名 BRAI (id=2) の tStr PTG トークンを介してリテラル系列ラベルとしてグラフサブストリームに書き込まれます。Excel はこのラベルを凡例と系列セレクターに使用するため、複数系列グラフはデフォルトの "Series1 / Series2" プレースホルダーの代わりに適切なキャプションを表示します

系列範囲バインディング (v2.47.0): v2.47.0 以降、CategoriesValues の A1 形式の範囲文字列は、数式コンパイラーとワークブック EXTERNSHEET 参照テーブルを経由して BRAI 内の実際の tArea3D セル範囲参照にコンパイルされます。v2.47.0 より前は、これらの 2 フィールドは API で受け付けられましたが cce=0 プレースホルダーとして出力されたため、レンダリングされたグラフは空でした。Categories / Values を空のままにした既存の v2.42.0 の呼び出し元には影響しません

返された TXLSWorksheetSheets コレクションに表示され、保存時にグラフシートの boundsheet エントリが書き込まれます。結果のセルレベルメソッドはサポートされていません — ホストワークシートはデータシートではなくグラフコンテナです

使用例

この例では、データシートと、そのデータシートの 2 列にバインドされた縦棒グラフを含むワークブックを作成します

var
  Series: array of TXLSChartSeriesInfo;
begin
  // Populate cells on Sheet1.
  Workbook.Sheets[1].Name := 'Data';
  // ... fill A1:B5 with categories + values ...

  SetLength(Series, 1);
  Series[0].Name       := 'Quarterly Revenue';
  Series[0].Categories := 'Data!$A$2:$A$5';
  Series[0].Values     := 'Data!$B$2:$B$5';

  Workbook.Sheets.AddChartSheet(
    'Revenue',
    xlsChartTypeColumn,
    'Quarterly Revenue',
    'Quarter',
    'USD',
    Series);

  Workbook.SaveAs('Revenue.xls', xlExcel97);
end;

制限事項

グラフの種類ごとの書式設定の詳細(間隔幅、棒の重なり、円グラフの穴のサイズ、マーカースタイル)は、グラフビルダーのデフォルトで出力されます — まだ API で公開されていません。Excel で保存と再オープンを行うと、グラフシートの存在、種別、タイトル、軸タイトル、系列キャプション、(v2.47.0 以降は) 系列データバインディングが保持されます

関連項目