Funktionen und Funktionalitäten
Funktionen und Merkmale
Diese Seite behandelt die Diagrammerstellungs-Funktionen von Aspose.Words FOSS für .NET mit funktionierenden C#-Beispielen, aufgebaut um DocumentBuilder.InsertChart() und dem Chart Objektmodell. Das vollständige Dokument-Objektmodell der Bibliothek (Absätze, Tabellen, Formatvorlagen, Lesezeichen, Abschnitte) wird in der Produktübersicht und im Quickstart Handbuch.
Ein Dokument mit einem Diagramm erstellen
Fügen Sie eine Diagrammform mit DocumentBuilder.InsertChart() ein und greifen Sie dann über das zurückgegebene Shape auf dessen Chart-Objekt zu. Löschen Sie die standardmäßig erzeugte Reihe, bevor Sie echte Daten hinzufügen:
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");Diagrammserien, Datenpunkte und Marker
Chart.Series ist ein ChartSeriesCollection. Jede ChartSeries stellt ihre einzelnen Datenpunkte über DataPoints bereit, wodurch Sie den Marker oder die Formatierung eines einzelnen Punktes anpassen können, ohne die übrigen Reihen zu beeinflussen:
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();Diagrammdatenbeschriftungen
ChartSeries.DataLabels ist ein ChartDataLabelCollection, das die Beschriftungen für jeden Punkt in der Serie auf einmal steuert. Greifen Sie mit DataLabels[i] darauf zu, um ein einzelnes ChartDataLabel zu überschreiben:
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;Diagrammachsentitel
Chart.AxisX und Chart.AxisY stellen jeweils ein ChartAxisTitle über ihre Title-Eigenschaft bereit:
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";Diagrammlegende und Schriften
Chart.Legend stellt LegendEntries bereit, ein ChartLegendEntry pro Serie, jeweils mit eigenem Font. Font implementiert Füllformatierung, sodass Font.Fill.Solid() eine einheitliche Textfarbe festlegt, genauso wie bei jedem anderen formatierten Lauf:
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;Diagrammdaten-Tabelle
Chart.DataTable ist ein ChartDataTable, das die zugrunde liegenden Serienwerte unterhalb des Diagramms anzeigt. Seine Has*Border- und HasLegendKeys-Eigenschaften steuern, welche Teile sichtbar sind:
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");Tipps und bewährte Verfahren
DocumentBuilder.InsertChart()füllt das neue Diagramm mit einer standardmäßig generierten Serie — rufen Siechart.Series.Clear()auf, bevor Sie Ihre eigenen Daten hinzufügen, sonst bleiben die Vorgaben daneben erhalten.- Verwenden Sie
ChartSeries.DataLabels[i], um ein Datenetikett zu adressieren, wenn nur wenige Punkte eine benutzerdefinierte Formatierung benötigen; verwenden Sie die sammlungsbezogenen Eigenschaften (DataLabels.ShowValueund ähnliche), um für jedes Etikett in der Serie gleichzeitig einen Standard festzulegen. ClearFormat()ist sowohl aufChartDataPointals auch aufChartDataLabelCollectionverfügbar — es setzt die direkte Formatierung auf das zurück, was die Serie standardmäßig erbt.- Die Feldauswertungs-Engine aktualisiert Inhaltsfelder wie
DATEundDOCPROPERTYprogrammgesteuert, aber Felder, die vom Seitenlayout abhängen (Seitenzahlen im Inhaltsverzeichnis,NUMPAGES), ergeben Platzhalterwerte0, weil diese Ausgabe die Layout-Engine nicht enthält. - Siehe das Installationshandbuch um das Paket über NuGet hinzuzufügen, oder aus dem Quellcode zu bauen, bevor Sie diese APIs referenzieren.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
Seitenzahlen oder Inhaltsverzeichniseinträge zeigen 0 | Diese Ausgabe enthält nicht die Seitenlayout-/Render-Engine | Erwartetes Verhalten — layoutabhängige Feldwerte werden nicht berechnet; verwenden Sie die kommerzielle Aspose.Words für .NET wenn Sie sie benötigen |
Document.Save() bis .pdf, .xps oder eine Bilddateierweiterung schlägt fehl | Renderformate sind in dieser Edition nicht enthalten | Speichern Sie stattdessen als DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown oder Nur-Text |
Laden einer .doc, .rtf, .odt, .html oder .epub Datei schlägt fehl | Nur DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown und Nur-Text werden für Laden/Speichern unterstützt | Konvertieren Sie die Quelldatei zuerst in DOCX oder verwenden Sie die kommerzielle Edition |
| Standard-Diagrammreihe erscheint weiterhin nach dem Hinzufügen benutzerdefinierter Daten | chart.Series.Clear() wurde nicht nach InsertChart() aufgerufen | Löschen Sie die standardmäßig generierte Serie, bevor Sie chart.Series.Add() aufrufen |
FAQ
Warum werden die Seitenzahlen in meinem Inhaltsverzeichnis als 0 angezeigt?
Diese FOSS-Edition enthält das Seitenlayout- und Rendering-Subsystem nicht, sodass jeder Feldwert, der vom Seitenlayout abhängt — einschließlich Seitenzahlen — zu einem Platzhalter 0 ausgewertet wird, anstatt zu einem berechneten Wert.
Kann ich ein Dokument als PDF oder in ein Bildformat exportieren?
Nicht in dieser Edition. PDF-, XPS- und Bildexport hängen vom selben Rendering-Subsystem ab, das entfernt wurde, um diese Edition kostenlos zu halten. Verwenden Sie das kommerzielle Aspose.Words für .NET für diese Ausgaben.
Kann ich eine neue digitale Signatur in einem Dokument erstellen?
Nein — diese Edition kann vorhandene digitale Signaturen prüfen, aber keine neuen erstellen.
Welche Diagrammtypen unterstützt InsertChart()?
InsertChart() nimmt einen ChartType-Wert entgegen — die Aufzählung umfasst Standard-Diagrammfamilien wie Linien-, Säulen-, Balken-, Kreis-, Flächen-, Donut-, Radar-, Streu-, Börsen- und Oberflächendiagramme, einschließlich ihrer gestapelten und 3D-Varianten.
API Reference Zusammenfassung
| Klasse / Eigenschaft | Beschreibung |
|---|---|
Document | Root-Dokumentobjekt; Save() schreibt in DOCX, Markdown oder Klartext |
DocumentBuilder | High-Level-Cursor API; InsertChart() fügt eine Diagrammform hinzu |
Shape | Zeichenobjekt, das von InsertChart() zurückgegeben wird; stellt die Chart-Eigenschaft bereit |
Chart | Diagrammobjekt; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | Seriendaten (Add, Clear) und serienspezifische Einstellungen |
ChartDataPoint / ChartDataPointCollection | Punktbezogene Formatierung; ClearFormat() |
ChartMarker / MarkerSymbol | Form und Größe des Datenpunkt-Markers |
ChartDataLabel / ChartDataLabelCollection | Anzeigeeinstellungen pro Label und für die gesamte Sammlung |
ChartAxisTitle | Titeltext angezeigt auf Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | Diagrammlegende und deren Einträge pro Serie |
ChartDataTable | Datentabelle unterhalb des Diagramms angezeigt |
Font / Fill | Textformatierung und Füllung (einfarbig, Verlauf) bei Diagrammtextelementen |