Convertir Sparkline a Imagen y HTML en Aspose.Cells for Node.js via Java

Introducción

Los sparklines son una forma compacta de visualizar tendencias directamente dentro de una hoja de cálculo. Mientras que los usuarios de Excel los ven en su lugar, muchos escenarios del mundo real requieren que un sparkline salga de la celda, por ejemplo, para ser incrustado en una celda diferente como una imagen estática, adjunto a un correo electrónico automatizado, o renderizado como parte de un informe HTML publicado en la web. Aspose.Cells admite ambas operaciones. El método Sparkline.toImage renderiza un sparkline individual a un flujo, y los bytes resultantes pueden asignarse a Cell.EmbeddedImage para que la imagen se almacene dentro de una sola celda del libro. Por separado, HtmlSaveOptions le permite convertir el libro completo, sparklines incluidos, en un archivo HTML autónomo. Este artículo recorre ambos flujos de trabajo de principio a fin.

Flujo de trabajo 1 — Renderizar Sparklines a Imágenes e Incrustarlos en Celdas

En este flujo de trabajo construirá una hoja de cálculo que contiene un pequeño rango de valores de origen, adjuntará tres grupos de sparklines diferentes (Línea, Columna y Apilado/Win-Loss) a ese rango, renderizará cada grupo como PNG, y escribirá esos bytes PNG en celdas adyacentes como imágenes incrustadas. El resultado final es un único archivo .xlsx que contiene tanto los sparklines en vivo como sus contrapartes de imagen renderizadas.

Instrucciones Paso a Paso

  1. Defina un directorio de trabajo y asegúrese de que exista en disco.
  2. Cree un nuevo Workbook y obtenga una referencia a la primera Worksheet.
  3. Rellene las celdas A1 a E1 con cinco valores numéricos de muestra (por ejemplo, ventas diarias o lecturas de temperatura).
  4. Agregue tres objetos SparklineGroup a la hoja de cálculo llamando a worksheet.sparklineGroups.add(...):
    • Un grupo SparklineType.Line anclado en F1, con rango de datos A1:E1.
    • Un grupo SparklineType.Column anclado en G1, con rango de datos A1:E1.
    • Un grupo SparklineType.Stacked (win/loss) anclado en H1, con rango de datos A1:E1.
  5. Cree una instancia de ImageOrPrintOptions y establezca su ImageType a ImageType.Png para que cada sparkline se renderice como un PNG transparente.
  6. Guarde el libro como output_with_sparklines.xlsx.
let workbook = new AsposeCells.Workbook();
let worksheet = workbook.getWorksheets().get(0);
// Poblar datos de muestra en las celdas A1:E1
worksheet.getCells().get("A1").putValue(5);
worksheet.getCells().get("B1").putValue(-3);
worksheet.getCells().get("C1").putValue(8);
worksheet.getCells().get("D1").putValue(-2);
worksheet.getCells().get("E1").putValue(6);
// Agregar un grupo de minigráficos de línea anclado en F1 (columna 5, fila 0)
let lineArea = new AsposeCells.CellArea();
lineArea.setStartColumn(5);
lineArea.setEndColumn(5);
lineArea.setStartRow(0);
lineArea.setEndRow(0);
let lineIdx = worksheet.getSparklineGroups().add(AsposeCells.SparklineType.Line, "A1:E1", false, lineArea);
// Agregar un grupo de minigráficos de columna anclado en G1 (columna 6, fila 0)
let columnArea = new AsposeCells.CellArea();
columnArea.setStartColumn(6);
columnArea.setEndColumn(6);
columnArea.setStartRow(0);
columnArea.setEndRow(0);
let columnIdx = worksheet.getSparklineGroups().add(AsposeCells.SparklineType.Column, "A1:E1", false, columnArea);
// Agregar un grupo de minigráficos de Ganancia/Pérdida (Apilado) anclado en H1 (columna 7, fila 0)
let stackedArea = new AsposeCells.CellArea();
stackedArea.setStartColumn(7);
stackedArea.setEndColumn(7);
stackedArea.setStartRow(0);
stackedArea.setEndRow(0);
let stackedIdx = worksheet.getSparklineGroups().add(AsposeCells.SparklineType.Stacked, "A1:E1", false, stackedArea);
// Configurar las opciones de imagen para la salida PNG
let imageOptions = new AsposeCells.ImageOrPrintOptions();
imageOptions.setImageType(AsposeCells.ImageType.Png);
// Convertir el minigráfico de línea a imagen e incrustarlo en la celda F2
let lineSp = worksheet.getSparklineGroups().get(lineIdx).getSparklines().get(0);
let lineMs = new java.io.ByteArrayOutputStream();
lineSp.toImage(lineMs, imageOptions);
worksheet.getCells().get("F2").setEmbeddedImage(lineMs.toByteArray());
// Convertir el minigráfico de columna a imagen e incrustarlo en la celda G2
let columnSp = worksheet.getSparklineGroups().get(columnIdx).getSparklines().get(0);
let columnMs = new java.io.ByteArrayOutputStream();
columnSp.toImage(columnMs, imageOptions);
worksheet.getCells().get("G2").setEmbeddedImage(columnMs.toByteArray());
// Convertir el minigráfico de Ganancia/Pérdida a imagen e incrustarlo en la celda H2
let stackedSp = worksheet.getSparklineGroups().get(stackedIdx).getSparklines().get(0);
let stackedMs = new java.io.ByteArrayOutputStream();
stackedSp.toImage(stackedMs, imageOptions);
worksheet.getCells().get("H2").setEmbeddedImage(stackedMs.toByteArray());
// Guardar el libro de trabajo en disco
workbook.save("output_with_sparklines.xlsx");

El código anterior produce un libro donde cada representación visual de un sparkline se duplica en dos formas: el sparkline nativo en vivo anclado en la fila 1, y una imagen PNG estática incrustada directamente en una celda vecina en la fila 2. Debido a que las imágenes viven dentro del archivo mismo, el libro sigue siendo un único artefacto autónomo que puede enviarse por correo electrónico o archivarse sin romper las referencias de imágenes incrustadas. Renderice cada grupo de sparklines como PNG, convierta el ByteArrayOutputStream a un byte[], y asigne el arreglo a la propiedad setEmbeddedImage de la celda objetivo; la asignación es lo que hace que la imagen sea parte del contenido almacenado de la celda.

Instrucciones Paso a Paso

  1. Defina un directorio de trabajo y asegúrese de que exista en disco.
  2. Cree un nuevo Workbook y obtenga una referencia a la primera Worksheet.
  3. Rellene las celdas A1 a E1 con cinco valores numéricos de muestra (por ejemplo, ventas diarias o lecturas de temperatura).
  4. Agregue tres objetos SparklineGroup a la hoja de cálculo llamando a worksheet.sparklineGroups.add(...):
    • Un grupo SparklineType.Line anclado en F1, con rango de datos A1:E1.
    • Un grupo SparklineType.Column anclado en G1, con rango de datos A1:E1.
    • Un grupo SparklineType.Stacked (win/loss) anclado en H1, con rango de datos A1:E1.
  5. Cree una instancia de ImageOrPrintOptions y establezca su ImageType a ImageType.Png para que cada sparkline se renderice como un PNG transparente.
  6. Guarde el libro como output_with_sparklines.xlsx.El código anterior produce un libro donde cada representación visual de un sparkline se duplica en dos formas: el sparkline nativo en vivo anclado en la fila 1, y una imagen PNG estática incrustada directamente en una celda vecina en la fila 2. Debido a que las imágenes viven dentro del archivo mismo, el libro sigue siendo un único artefacto autónomo que puede enviarse por correo electrónico o archivarse sin romper las referencias de imágenes incrustadas. Renderice cada grupo de sparklines como PNG, convierta el ByteArrayOutputStream a un byte[], y asigne el arreglo a la propiedad setEmbeddedImage de la celda objetivo; la asignación es lo que hace que la imagen sea parte del contenido almacenado de la celda.