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