Características y Funcionalidades
Características y Funcionalidades
Esta página cubre las capacidades de creación de gráficos de Aspose.Words FOSS para .NET con ejemplos funcionales de C#, construidos alrededor de DocumentBuilder.InsertChart() y el Chart modelo de objetos. El modelo completo de objetos del documento de la biblioteca (párrafos, tablas, estilos, marcadores, secciones) se describe en la visión general del producto y en el Quickstart guía.
Creando un Documento con un Gráfico
Inserte una forma de gráfico con DocumentBuilder.InsertChart(), luego acceda a su objeto Chart a través del Shape devuelto. Elimine la serie generada por defecto antes de añadir datos reales:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
// Delete default generated series.
chart.Series.Clear();
string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
doc.Save("chart.docx");Series de Gráficos, Puntos de Datos y Marcadores
Chart.Series es un ChartSeriesCollection. Cada ChartSeries expone sus puntos de datos individuales a través de DataPoints, lo que le permite personalizar el marcador o formato de un solo punto sin afectar al resto de la serie:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
ChartDataPointCollection points = series.DataPoints;
ChartDataPoint point1 = points[0];
ChartDataPoint point2 = points[1];
point1.InvertIfNegative = true;
point1.Marker.Symbol = MarkerSymbol.Square;
point2.InvertIfNegative = true;
point2.Marker.Symbol = MarkerSymbol.Diamond;
// Reset a single data point back to the series' inherited default formatting.
point1.ClearFormat();Etiquetas de Datos del Gráfico
ChartSeries.DataLabels es un ChartDataLabelCollection que controla las etiquetas de cada punto de la serie a la vez. Indexa en él con DataLabels[i] para sobrescribir un ChartDataLabel individual:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
series.HasDataLabels = true;
series.DataLabels.ShowValue = true;
ChartDataLabel label = series.DataLabels[1];
label.ShowCategoryName = true;
label.Position = ChartDataLabelPosition.Below;Títulos de los ejes del gráfico
Chart.AxisX y Chart.AxisY cada uno exponen un ChartAxisTitle a través de su propiedad Title:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
Chart chart = shape.Chart;
ChartAxisTitle xTitle = chart.AxisX.Title;
ChartAxisTitle yTitle = chart.AxisY.Title;
xTitle.Show = true;
xTitle.Text = "Categories";
yTitle.Show = true;
yTitle.Text = "Values";Leyenda del gráfico y fuentes
Chart.Legend expone LegendEntries, un ChartLegendEntry por serie, cada uno con su propio Font. Font implementa el formato de relleno, por lo que Font.Fill.Solid() establece un color de texto sólido de la misma manera que lo haría en cualquier otro fragmento formateado:
using System.Drawing;
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartLegend legend = shape.Chart.Legend;
Font font1 = legend.LegendEntries[0].Font;
Font font2 = legend.LegendEntries[1].Font;
font1.Fill.Solid(Color.Blue);
font2.Color = Color.Green;Tabla de datos del gráfico
Chart.DataTable es un ChartDataTable que muestra los valores subyacentes de la serie debajo del gráfico. Sus propiedades Has*Border y HasLegendKeys controlan qué partes son visibles:
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartDataTable dataTable = shape.Chart.DataTable;
dataTable.HasLegendKeys = false;
dataTable.HasHorizontalBorder = true;
dataTable.HasVerticalBorder = true;
dataTable.HasOutlineBorder = false;
doc.Save("chart-report.docx");Consejos y mejores prácticas
DocumentBuilder.InsertChart()rellena el nuevo gráfico con una serie generada por defecto — llame achart.Series.Clear()antes de agregar sus propios datos, o los valores predeterminados permanecerán junto a ella.- Utilice
ChartSeries.DataLabels[i]para dirigirse a una etiqueta de datos cuando solo algunos puntos necesiten formato personalizado; use las propiedades a nivel de colección (DataLabels.ShowValue, y similares) para establecer un valor predeterminado para cada etiqueta de la serie de una sola vez. ClearFormat()está disponible tanto enChartDataPointcomo enChartDataLabelCollection— restablece el formato directo a lo que la serie hereda por defecto.- El motor de evaluación de campos actualiza los campos de contenido como
DATEyDOCPROPERTYde forma programática, pero los campos que dependen del diseño de página (números de página en un índice,NUMPAGES) se evalúan a valores de marcador de posición0porque esta edición no incluye el motor de diseño. - Consulte el Guía de instalación para agregar el paquete mediante NuGet, o compilar desde el código fuente, antes de referenciar estas APIs.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
Los números de página o las entradas del índice muestran 0 | Esta edición no incluye el motor de maquetación/renderizado de página | Comportamiento esperado — los valores de los campos dependientes del diseño no se calculan; utilice la versión comercial Aspose.Words para .NET si los necesitas |
Document.Save() a .pdf, .xps, o una extensión de imagen falla | Los formatos de renderizado no están incluidos en esta edición | Guarda en DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown o texto plano en su lugar |
Cargar un archivo .doc, .rtf, .odt, .html o .epub falla | Solo DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown y texto plano son compatibles para cargar/guardar | Convierte el archivo fuente a DOCX primero, o usa la edición comercial |
| La serie de gráfico predeterminada aún aparece después de agregar datos personalizados | chart.Series.Clear() no se llamó después de InsertChart() | Borre la serie generada por defecto antes de llamar a chart.Series.Add() |
FAQ
¿Por qué los números de página en mi tabla de contenidos aparecen como 0?
Esta edición FOSS no incluye el subsistema de diseño de página y renderizado, por lo que cualquier valor de campo que dependa del diseño de página — incluidos los números de página — se evalúa a un marcador de posición 0 en lugar de un valor calculado.
¿Puedo exportar un documento a PDF o a un formato de imagen?
No en esta edición. La exportación a PDF, XPS y a imágenes depende del mismo subsistema de renderizado que se eliminó para mantener esta edición gratuita. Utilice el Aspose.Words comercial para .NET para esas salidas.
¿Puedo crear una nueva firma digital en un documento?
No — esta edición puede verificar firmas digitales existentes pero no puede crear nuevas.
¿Qué tipos de gráficos admite InsertChart()?
InsertChart() toma un valor ChartType — el enum cubre familias estándar de gráficos como línea, columna, barra, pastel, área, rosquilla, radar, dispersión, financiero y de superficie, incluidas sus variantes apiladas y 3D.
API Reference Resumen
| Clase / Propiedad | Descripción |
|---|---|
Document | Objeto raíz del documento; Save() escribe en DOCX, Markdown o texto plano |
DocumentBuilder | Cursor de alto nivel API; InsertChart() agrega una forma de gráfico |
Shape | Objeto de dibujo devuelto por InsertChart(); expone la propiedad Chart |
Chart | Objeto de gráfico; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | Datos de la serie (Add, Clear) y configuraciones por serie |
ChartDataPoint / ChartDataPointCollection | Formato por punto; ClearFormat() |
ChartMarker / MarkerSymbol | Forma y tamaño del marcador de punto de datos |
ChartDataLabel / ChartDataLabelCollection | Configuraciones de visualización de etiquetas por etiqueta y a nivel de toda la colección |
ChartAxisTitle | Texto del título mostrado en Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | Leyenda del gráfico y sus entradas por serie |
ChartDataTable | Tabla de datos mostrada debajo del gráfico |
Font / Fill | Formato de texto y relleno (color sólido, degradado) en los elementos de texto del gráfico |