HotXLS-Dokumentation

AddChartSheet-Methode

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