Fügt der Arbeitsmappe programmatisch ein BIFF8-
Diagrammblatt hinzu und gibt den neuen
TXLSWorksheet-Tab zurück. Bisher konnten Diagrammblätter nur undurchsichtig beim Laden-Speichern-Roundtrip über
TXLSCustomChart erhalten werden; diese Methode schreibt einen vollständigen Diagramm-Substream direkt in
SaveAs(xlExcel97). Excel öffnet das Ergebnis als Diagrammtab der angeforderten Art. Verfügbar seit v2.41.0 (Roadmap #10 Phase 1); die Array-of-Series-Überladung folgt in v2.42.0
TXLSChartType-Enumeration
Wählt die Diagrammart aus. Aus lxHandle re-exportiert, damit Benutzercode die Chart-Builder-Unit nicht direkt importieren muss
type
TXLSChartType = (
xlsChartTypeColumn,
xlsChartTypeBar,
xlsChartTypeLine,
xlsChartTypePie);
TXLSChartSeriesInfo-Datensatz
Enthält eine einzelne Seriendeklaration für die 6-Parameter-Überladung. Categories und Values sind A1-Bereich-Zeichenfolgen (z. B. 'Sheet1!$B$2:$B$5')
type
TXLSChartSeriesInfo = record
Name : WideString;
Categories : WideString;
Values : WideString;
end;
Syntax
Fünf Überladungen decken zunehmend reichhaltigere Diagrammblatt-Definitionen ab:
// 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;
Hinweise
Der emittierte Diagramm-Substream umfasst das BIFF8-Framing, das die Spezifikation verlangt — BOF (dt=$0020), Chart / PlotGrowth / Frame / Series / SheetProperties / AxesUsed / AxisParent (POS + Kategorie-Achse + Wert-Achse + PlotArea + Frame + ChartFormat + Diagrammart-Datensatz + ChartFormatLink + Legende), EOF. Bestehender Diagrammblatt-Roundtrip über TXLSCustomChart bleibt unverändert
Serienbindung (v2.42.0): Jeder nicht-leere Series[i].Name wird als literales Serienetikett über einen tStr-PTG-Token auf der serienbezogenen BRAI (id=2) in den Diagramm-Substream geschrieben. Excel verwendet dieses Etikett in der Legende und im Serienauswahl, sodass Mehrserien-Diagramme korrekte Beschriftungen anstelle der Standard-Platzhalter 'Series1 / Series2' anzeigen
Serienbereich-Bindung (v2.47.0): Ab v2.47.0 werden die Categories- und Values-A1-Bereich-Zeichenfolgen in echte tArea3D-Zellbereichsreferenzen innerhalb der BRAI kompiliert, unter Verwendung des Formelcompilers und der Workbook-EXTERNSHEET-Referenztabelle. Vor v2.47.0 wurden diese beiden Felder auf der API akzeptiert, aber als cce=0-Platzhalter emittiert, sodass das gerenderte Diagramm leer war. Bestehende v2.42.0-Aufrufer, die Categories/Values leer ließen, sind nicht betroffen
Das zurückgegebene TXLSWorksheet erscheint in der Sheets-Sammlung und erhält beim Speichern einen Diagrammblatt-Boundsheet-Eintrag. Methoden auf Zellenebene für das Ergebnis werden nicht unterstützt — das Host-Tabellenblatt ist ein Diagramm-Container, kein Datenblatt
Beispiel
Dieses Beispiel erstellt eine Arbeitsmappe mit einem Datenblatt und einem Spaltendiagramm, das an zwei Spalten dieses Datenblatts gebunden ist
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;
Einschränkungen
Formatierungsdetails pro Diagrammtyp (Lückenbreite, Balkenüberlappung, Kreislochgröße, Markierungsstil) werden weiterhin mit den Chart-Builder-Standardwerten emittiert — noch nicht auf der API verfügbar. Speichern und erneutes Öffnen mit Excel erhält die Anwesenheit des Diagrammblatts, Art, Titel, Achsentitel, Serienüberschriften und (ab v2.47.0) die Seriendatenbindung
Siehe auch