Caratteristiche e funzionalità

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 — chiama chart.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.ShowValue e simili) per impostare un valore predefinito per ogni etichetta nella serie contemporaneamente.
  • ClearFormat() è disponibile sia su ChartDataPoint che su ChartDataLabelCollection — 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 DATE e DOCPROPERTY, ma i campi che dipendono dal layout della pagina (numeri di pagina in un indice, NUMPAGES) vengono valutati come valori segnaposto 0 perché 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

ProblemaCausaCorrezione
I numeri di pagina o le voci dell’indice mostrano 0Questa edizione non include il motore di layout/renderingComportamento 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 fallisceI formati di rendering non sono inclusi in questa edizioneSalva invece in DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown o testo semplice
Il caricamento di un file .doc, .rtf, .odt, .html o .epub fallisceSolo DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown e testo semplice sono supportati per il caricamento e il salvataggioConverti prima il file sorgente in DOCX, oppure usa l’edizione commerciale
La serie di grafico predefinita appare ancora dopo aver aggiunto dati personalizzatichart.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
DocumentOggetto documento radice; Save() scrive in DOCX, Markdown o testo semplice
DocumentBuilderCursore di alto livello API; InsertChart() aggiunge una forma di grafico
ShapeOggetto di disegno restituito da InsertChart(); espone la proprietà Chart
ChartOggetto grafico; Series, Legend, DataTable, AxisX, AxisY, Title
ChartSeries / ChartSeriesCollectionDati della serie (Add, Clear) e impostazioni per serie
ChartDataPoint / ChartDataPointCollectionFormattazione per punto; ClearFormat()
ChartMarker / MarkerSymbolForma e dimensione del marcatore del punto dati
ChartDataLabel / ChartDataLabelCollectionImpostazioni di visualizzazione delle etichette per etichetta e per l’intera raccolta
ChartAxisTitleTesto del titolo mostrato su Chart.AxisX / Chart.AxisY
ChartLegend / ChartLegendEntryLegenda del grafico e le sue voci per serie
ChartDataTableTabella dei dati mostrata sotto il grafico
Font / FillFormattazione del testo e riempimento (colore solido, gradiente) sugli elementi di testo del grafico

Vedi anche

 Italiano