以程式設計方式將 BIFF8
圖表工作表附加至活頁簿,傳回新的
TXLSWorksheet 標籤頁。先前,圖表工作表只能在載入-儲存往返過程中透過
TXLSCustomChart 不透明地保留;此方法直接將完整的圖表子串流寫入
SaveAs(xlExcel97)。Excel 以所請求類型的圖表標籤頁開啟結果。自 v2.41.0(路線圖 #10 第 1 階段)起可用;陣列-序列多載於 v2.42.0 後續推出
TXLSChartType 列舉
選取圖表類型。從 lxHandle 重新匯出,使使用者程式碼無需直接匯入圖表建立器單元
type
TXLSChartType = (
xlsChartTypeColumn,
xlsChartTypeBar,
xlsChartTypeLine,
xlsChartTypePie);
TXLSChartSeriesInfo 記錄
承載六個參數多載的單一序列宣告。Categories 和 Values 為 A1 範圍字串(例如 'Sheet1!$B$2:$B$5')
type
TXLSChartSeriesInfo = record
Name : WideString;
Categories : WideString;
Values : WideString;
end;
語法
五個多載涵蓋逐漸豐富的圖表工作表定義:
// 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 開始,Categories 和 Values A1 範圍字串透過公式編譯器和活頁簿 EXTERNSHEET 參照表編譯為 BRAI 內的實際 tArea3D 儲存格範圍參照。在 v2.47.0 之前,這兩個欄位在 API 上接受但以 cce=0 佔位符號發出,因此呈現的圖表為空。保留 Categories / Values 為空的現有 v2.42.0 呼叫端不受影響
傳回的 TXLSWorksheet 出現在 Sheets 集合中,並在儲存時獲得圖表工作表 boundsheet 項目的寫入。對於結果的儲存格層級方法不受支援 — 主工作表是圖表容器,而非資料工作表
範例
此範例建立包含資料工作表和繫結至該資料工作表兩欄資料的直條圖的活頁簿
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 起的序列資料繫結
另請參閱