Recursos e Funcionalidades
Recursos e Funcionalidades
Esta página cobre as capacidades de criação de gráficos de Aspose.Words FOSS para .NET com exemplos funcionais de C#, construídos em torno de DocumentBuilder.InsertChart() e o Chart modelo de objeto. O modelo completo de objeto de documento da biblioteca (parágrafos, tabelas, estilos, marcadores, seções) é descrito na visão geral do produto e no Quickstart guia.
Criando um Documento com um Gráfico
Insira uma forma de gráfico com DocumentBuilder.InsertChart(), então acesse seu objeto Chart através do Shape retornado. Limpe a série gerada por padrão antes de adicionar dados reais:
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");Séries de Gráfico, Pontos de Dados e Marcadores
Chart.Series é um ChartSeriesCollection. Cada ChartSeries expõe seus pontos de dados individuais através de DataPoints, o que permite personalizar o marcador ou a formatação de um único ponto sem afetar o restante da série:
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();Rótulos de Dados do Gráfico
ChartSeries.DataLabels é um ChartDataLabelCollection que controla os rótulos de todos os pontos da série de uma vez. Indexe nele com DataLabels[i] para sobrescrever um 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 dos Eixos do Gráfico
Chart.AxisX e Chart.AxisY cada um expõe um ChartAxisTitle através da propriedade 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";Legenda do Gráfico e Fontes
Chart.Legend expõe LegendEntries, um ChartLegendEntry por série, cada um com seu próprio Font. Font implementa formatação de preenchimento, portanto Font.Fill.Solid() define uma cor de texto sólida da mesma forma que faria em qualquer outra sequência formatada:
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;Tabela de Dados do Gráfico
Chart.DataTable é um ChartDataTable que exibe os valores subjacentes da série abaixo do gráfico. Suas propriedades Has*Border e HasLegendKeys controlam quais partes são visíveis:
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");Dicas e Melhores Práticas
DocumentBuilder.InsertChart()preenche o novo gráfico com uma série gerada por padrão — chamechart.Series.Clear()antes de adicionar seus próprios dados, ou os padrões permanecerão ao lado dele.- Use
ChartSeries.DataLabels[i]para direcionar um rótulo de dados quando apenas alguns pontos precisam de formatação personalizada; use as propriedades de nível de coleção (DataLabels.ShowValuee similares) para definir um padrão para todos os rótulos da série de uma vez. ClearFormat()está disponível tanto emChartDataPointquanto emChartDataLabelCollection— ele redefine a formatação direta para o que a série herda por padrão.- O motor de avaliação de campos atualiza campos de conteúdo como
DATEeDOCPROPERTYprogramaticamente, mas campos que dependem do layout da página (números de página em um sumário,NUMPAGES) são avaliados como valores de placeholder0porque esta edição não inclui o motor de layout. - Veja o Guia de Instalação para adicionar o pacote via NuGet, ou compilar a partir do código-fonte, antes de referenciar estas APIs.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
Números de página ou entradas do sumário mostram 0 | Esta edição não inclui o mecanismo de layout/renderização de página | Comportamento esperado — valores de campo dependentes de layout não são calculados; use a versão comercial Aspose.Words para .NET se precisar deles |
Document.Save() para .pdf, .xps, ou uma extensão de imagem falha | Os formatos de renderização não estão incluídos nesta edição | Salve como DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown ou texto simples, em vez disso |
Carregar um arquivo .doc, .rtf, .odt, .html ou .epub falha | Somente DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown e texto simples são suportados para carregamento e salvamento | Converta o arquivo fonte para DOCX primeiro, ou use a edição comercial |
| A série padrão do gráfico ainda aparece após a adição de dados personalizados | chart.Series.Clear() não foi chamado após InsertChart() | Limpe a série padrão gerada antes de chamar chart.Series.Add() |
FAQ
Por que os números de página no meu índice aparecem como 0?
Esta edição FOSS não inclui o subsistema de layout de página e renderização, portanto qualquer valor de campo que dependa do layout da página — incluindo números de página — avalia-se como um placeholder 0 em vez de um valor calculado.
Posso exportar um documento para PDF ou um formato de imagem?
Não nesta edição. A exportação para PDF, XPS e imagem depende do mesmo subsistema de renderização que foi removido para manter esta edição gratuita. Use o Aspose.Words comercial para .NET para essas saídas.
Posso criar uma nova assinatura digital em um documento?
Não — esta edição pode verificar assinaturas digitais existentes, mas não pode criar novas.
Quais tipos de gráfico InsertChart() suporta?
InsertChart() recebe um valor ChartType — o enum abrange famílias padrão de gráficos, como linha, coluna, barra, pizza, área, rosquinha, radar, dispersão, ações e superfície, incluindo suas variantes empilhadas e 3D.
API Reference Resumo
| Classe / Propriedade | Descrição |
|---|---|
Document | Objeto raiz do documento; Save() grava em DOCX, Markdown ou texto simples |
DocumentBuilder | Cursor de alto nível API; InsertChart() adiciona uma forma de gráfico |
Shape | Objeto de desenho retornado por InsertChart(); expõe a propriedade Chart |
Chart | Objeto de gráfico; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | Dados da série (Add, Clear) e configurações por série |
ChartDataPoint / ChartDataPointCollection | Formatação por ponto; ClearFormat() |
ChartMarker / MarkerSymbol | Formato e tamanho do marcador de ponto de dados |
ChartDataLabel / ChartDataLabelCollection | Configurações de exibição de rótulo por rótulo e para toda a coleção |
ChartAxisTitle | Texto do título exibido em Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | Legenda do gráfico e suas entradas por série |
ChartDataTable | Tabela de dados exibida abaixo do gráfico |
Font / Fill | Formatação de texto e preenchimento (cor sólida, gradiente) nos elementos de texto do gráfico |