Documentación de HotXLS

Método AddChartSheet

Agrega programáticamente una hoja de gráfico BIFF8 al libro de trabajo y devuelve la nueva pestaña TXLSWorksheet . Anteriormente, las hojas de gráfico solo podían preservarse de forma opaca en un ciclo de carga-guardado mediante TXLSCustomChart; este método escribe un substream de gráfico completo directamente en SaveAs(xlExcel97). Excel abre el resultado como una hoja de gráfico completamente funcional

Enumeración TXLSChartType

Selecciona el tipo de gráfico. Re-exportado desde lxHandle para que el código de usuario no necesite importar la unidad del generador de gráficos directamente
type
  TXLSChartType = (
    xlsChartTypeColumn,
    xlsChartTypeBar,
    xlsChartTypeLine,
    xlsChartTypePie);

Registro TXLSChartSeriesInfo

Lleva una declaración de serie única para la sobrecarga de 6 parámetros. Categories y Values son cadenas de rango en estilo A1 (p. ej., 'Sheet1!$B$2:$B$5')
type
  TXLSChartSeriesInfo = record
    Name        : WideString;
    Categories  : WideString;
    Values      : WideString;
  end;

Sintaxis

Cinco sobrecargas cubren definiciones de hoja de gráfico progresivamente más ricas:
// 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;

Observaciones

El substream de gráfico emitido cubre el marco BIFF8 que la especificación requiere — BOF (dt=$0020), Chart / PlotGrowth / Frame / Series / SheetProperties / AxesUsed / AxisParent (POS + eje de categoría + eje de valor + PlotArea + Frame + ChartFormat + registro del tipo de gráfico + ChartFormatLink + Leyenda), EOF. El ciclo de ida y vuelta de hojas de gráfico existentes mediante TXLSCustomChart no se modifica

Vinculación de nombre de serie (v2.42.0): cada Series[i].Name no vacío se escribe en el substream del gráfico como una etiqueta de serie literal mediante un token PTG tStr en el BRAI del nombre de serie (id=2). Excel utiliza esta etiqueta en la leyenda y el selector de series, por lo que los gráficos de varias series muestran títulos adecuados en lugar de los marcadores de posición predeterminados "Series1 / Series2"

Vinculación de rango de serie (v2.47.0): a partir de la versión v2.47.0, las cadenas de rango A1 de Categories y Values se compilan en referencias de rango de celdas reales tArea3D dentro del BRAI, pasando por el compilador de fórmulas y la tabla de referencias EXTERNSHEET del libro de trabajo cce=0 como marcadores de posición, por lo que el gráfico renderizado quedaba vacío. Los llamadores existentes de v2.42.0 que dejaban Categories / Values empty are unaffected

The returned TXLSWorksheet appears in the Sheets colección y recibe una entrada boundsheet de hoja de gráfico al guardar. Los métodos a nivel de celda del resultado no están soportados — la hoja contenedora es un contenedor de gráfico, no una hoja de datos

Ejemplo

y obtiene una entrada de hoja de gráfico boundsheet escrita al guardar. Los métodos a nivel de celda en el resultado no son compatibles — la hoja de cálculo host es un contenedor de gráfico, no una hoja de datos

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;

Limitaciones

Este ejemplo crea un libro de trabajo con una hoja de datos y un gráfico de columnas vinculado a dos columnas de esa hoja de datos

Véase también