Caratteristiche e funzionalità
Caratteristiche e funzionalità
Questa pagina copre le funzionalità di creazione di grafici di Aspose.Words FOSS per .NET con esempi funzionanti di C#, costruiti attorno a DocumentBuilder.InsertChart() e il Chart modello di oggetti. Il modello completo di oggetti del documento della libreria (paragrafi, tabelle, stili, segnalibri, sezioni) è descritto nella panoramica del prodotto e nella Quickstart guida.
Creare un documento con un grafico
Inserisci una forma di grafico con DocumentBuilder.InsertChart(), quindi accedi al suo oggetto Chart tramite il Shape restituito. Cancella la serie generata di default prima di aggiungere dati reali:
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");Serie del grafico, punti dati e marcatori
Chart.Series è un ChartSeriesCollection. Ogni ChartSeries espone i propri punti dati individuali tramite DataPoints, il che consente di personalizzare il marcatore o la formattazione di un singolo punto senza influenzare il resto della 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();Etichette dati del grafico
ChartSeries.DataLabels è un ChartDataLabelCollection che controlla le etichette per ogni punto della serie contemporaneamente. Indicizzalo con DataLabels[i] per sovrascrivere un singolo ChartDataLabel:
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;Titoli degli assi del grafico
Chart.AxisX e Chart.AxisY espongono ciascuno un ChartAxisTitle tramite la loro proprietà 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 del grafico e caratteri
Chart.Legend espone LegendEntries, un ChartLegendEntry per serie, ciascuno con il proprio Font. Font implementa la formattazione di riempimento, quindi Font.Fill.Solid() imposta un colore di testo solido allo stesso modo in cui lo farebbe su qualsiasi altro intervallo formattato:
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;Tabella dati del grafico
Chart.DataTable è un ChartDataTable che visualizza i valori della serie sottostante al di sotto del grafico. Le sue proprietà Has*Border e HasLegendKeys controllano quali parti sono visibili:
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");Suggerimenti e best practice
DocumentBuilder.InsertChart()popola il nuovo grafico con una serie generata di default — chiamachart.Series.Clear()prima di aggiungere i tuoi dati, altrimenti le impostazioni predefinite rimarranno accanto ad essa.- Usa
ChartSeries.DataLabels[i]per indirizzare un’etichetta dati quando solo pochi punti necessitano di formattazione personalizzata; usa le proprietà a livello di collezione (DataLabels.ShowValuee simili) per impostare un valore predefinito per ogni etichetta nella serie contemporaneamente. ClearFormat()è disponibile sia suChartDataPointche suChartDataLabelCollection— ripristina la formattazione diretta a quello che la serie eredita di default.- Il motore di valutazione dei campi aggiorna programmaticamente i campi di contenuto come
DATEeDOCPROPERTY, ma i campi che dipendono dal layout della pagina (numeri di pagina in un indice,NUMPAGES) vengono valutati come valori segnaposto0perché questa edizione non include il motore di layout. - Vedi la Guida all’installazione per aggiungere il pacchetto tramite NuGet, o compilare dal codice sorgente, prima di fare riferimento a queste API.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
I numeri di pagina o le voci dell’indice mostrano 0 | Questa edizione non include il motore di layout/rendering | Comportamento previsto — i valori dei campi dipendenti dal layout non vengono calcolati; usa la versione commerciale Aspose.Words per .NET se ne hai bisogno |
La conversione da Document.Save() a .pdf, .xps, o un’estensione immagine fallisce | I formati di rendering non sono inclusi in questa edizione | Salva invece in DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown o testo semplice |
Il caricamento di un file .doc, .rtf, .odt, .html o .epub fallisce | Solo DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown e testo semplice sono supportati per il caricamento e il salvataggio | Converti prima il file sorgente in DOCX, oppure usa l’edizione commerciale |
| La serie di grafico predefinita appare ancora dopo aver aggiunto dati personalizzati | chart.Series.Clear() non è stato chiamato dopo InsertChart() | Cancella la serie generata di default prima di chiamare chart.Series.Add() |
FAQ
Perché i numeri di pagina nel mio indice risultano 0?
Questa edizione FOSS non include il sottosistema di layout della pagina e rendering, quindi qualsiasi valore di campo che dipende dal layout della pagina — inclusi i numeri di pagina — viene valutato come un segnaposto 0 invece di un valore calcolato.
Posso esportare un documento in PDF o in un formato immagine?
Non in questa edizione. L’esportazione in PDF, XPS e immagine dipende dallo stesso sottosistema di rendering che è stato rimosso per mantenere questa edizione gratuita. Usa la versione commerciale Aspose.Words per .NET per quegli output.
Posso creare una nuova firma digitale su un documento?
No — questa edizione può verificare firme digitali esistenti ma non può crearne di nuove.
Quali tipi di grafico supporta InsertChart()?
InsertChart() accetta un valore ChartType — l’enumerazione comprende le famiglie di grafici standard come line, column, bar, pie, area, doughnut, radar, scatter, stock e surface, incluse le loro varianti impilate e 3D.
API Reference Riepilogo
| Classe / Proprietà | Descrizione |
|---|---|
Document | Oggetto documento radice; Save() scrive in DOCX, Markdown o testo semplice |
DocumentBuilder | Cursore di alto livello API; InsertChart() aggiunge una forma di grafico |
Shape | Oggetto di disegno restituito da InsertChart(); espone la proprietà Chart |
Chart | Oggetto grafico; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | Dati della serie (Add, Clear) e impostazioni per serie |
ChartDataPoint / ChartDataPointCollection | Formattazione per punto; ClearFormat() |
ChartMarker / MarkerSymbol | Forma e dimensione del marcatore del punto dati |
ChartDataLabel / ChartDataLabelCollection | Impostazioni di visualizzazione delle etichette per etichetta e per l’intera raccolta |
ChartAxisTitle | Testo del titolo mostrato su Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | Legenda del grafico e le sue voci per serie |
ChartDataTable | Tabella dei dati mostrata sotto il grafico |
Font / Fill | Formattazione del testo e riempimento (colore solido, gradiente) sugli elementi di testo del grafico |