Wie man mit Charts in .NET arbeitet
Dieser Leitfaden zeigt, wie man ein nativen Word-Diagramm einfügt und dessen Aussehen mit Aspose.Words FOSS für .NET steuert – die Legende und Achsen ausblenden, die Skala der Wertachse fixieren, dann einen anderen Diagrammtyp wählen und Datenbeschriftungen sowie einzelne Punkte formatieren. Aspose.Words FOSS für .NET ist über NuGet oder durch Kompilieren aus dem Quellcode verfügbar.
Schritt-für-Schritt-Anleitung
Schritt 1: Bibliothek holen
Repository klonen und bauen Aspose.Words.sln in Release-Konfiguration, dann fügen Sie eine Projektreferenz zu Aspose.Words.csproj aus Ihrem eigenen .NET-Projekt, wie im Installationshandbuch.
Schritt 2: Diagramm einfügen und sein Aussehen vereinfachen
DocumentBuilder.InsertChart(chartType, width, height) fügt an der Cursorposition eine Diagrammform ein und gibt das enthaltende Shape zurück; seine Chart-Eigenschaft ist das Chart-Objekt, das Sie konfigurieren, mit AxisX, AxisY, Legend und Title als seinen Hauptelementen. Diagrammtypen befinden sich im Aspose.Words.Drawing.Charts-Namespace neben dem Kern-Aspose.Words-Namespace. Ein minimales, präsentationsfertiges ChartType.Bar-Diagramm in einem neuen Document bedeutet oft, Legend.Position auf LegendPosition.None zu setzen, Hidden und HasMajorGridlines auf AxisY und AxisX zu setzen, Title.Show auf false zu setzen, den Platzhalter ChartSeriesCollection mit Series.Clear() zu leeren, bevor Series.Add(seriesName, categories, values) aufgerufen wird, AxisY.Scaling.Maximum an eine feste AxisBound zu binden, anstatt ihn automatisch skalieren zu lassen, und schließlich das Ergebnis mit Document.Save zu schreiben. Das vollständige Beispiel – Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound und Document.Save – sieht folgendermaßen aus:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Bar, 432, 252);
Chart chart = shape.Chart;
chart.Legend.Position = LegendPosition.None;
ChartSeriesCollection seriesColl = chart.Series;
chart.AxisY.Hidden = true;
chart.AxisY.HasMajorGridlines = false;
chart.AxisX.Hidden = true;
chart.Title.Show = false;
seriesColl.Clear();
chart.AxisY.Scaling.Maximum = new AxisBound(100);
string[] categories = new string[] { "AW Category 1" };
seriesColl.Add("AW Series 1", categories, new double[] { 30 });
doc.Save("chart.docx");Dies erstellt einen Document, fügt ein ChartType.Bar-Diagramm ein, setzt Chart.Legend.Position auf LegendPosition.None, um die Legende zu verbergen, setzt Hidden = true und HasMajorGridlines = false auf chart.AxisY und Hidden = true auf chart.AxisX, setzt chart.Title.Show = false, löscht die Platzhalter-Serie mit seriesColl.Clear(), fixiert die Werteachse auf ein 100-Maximum über chart.AxisY.Scaling.Maximum = new AxisBound(100), fügt eine reale Serie mit seriesColl.Add(seriesName, categories, values) hinzu und schreibt das Ergebnis mit Document.Save.
Schritt 3: Einen anderen Diagrammtyp auswählen
ChartType deckt die Standard-Word-Diagrammfamilien ab — Line, Bar, Column (plus Varianten von Stacked, PercentStacked und 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface und die Word-2016-Typen Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker und Waterfall. Übergeben Sie den gewünschten Wert als chartType-Argument an InsertChart – es gibt kein Mitglied, das den Typ eines bereits eingefügten Diagramms ändert, wählen Sie also das richtige gleich zu Beginn aus oder ersetzen Sie die Form.
Schritt 4: Datenbeschriftungen hinzufügen und formatieren
Setzen Sie series.HasDataLabels = true, bevor Sie series.DataLabels (ein ChartDataLabelCollection) konfigurieren – seine Anzeige-Umschalter haben keine sichtbare Wirkung, solange die Beschriftungen deaktiviert sind. ShowValue, ShowCategoryName und ShowPercentage steuern, welche Informationsstücke angezeigt werden, und Position positioniert sie relativ zum Datenpunkt.
Schritt 5: Einen einzelnen Datenpunkt formatieren
Greifen Sie über den Index auf das DataPoints einer Serie (ein ChartDataPointCollection) zu, um ein ChartDataPoint zu erreichen, und setzen Sie dessen Format, Marker, Explosion oder InvertIfNegative unabhängig vom Rest der Serie. So heben Sie einen einzelnen Balken, ein Stück oder ein Markierungspunkt hervor, ohne die gesamte Serie neu zu stylen.
Häufige Probleme und Lösungen
Das neue Diagramm zeigt unerwartete Demo-Daten. InsertChart befült das Diagramm mit Platzhalter-Serien. Call chart.Series.Clear() bevor Sie Ihre eigenen Serien hinzufügen.
Hiding AxisY entfernt die Rasterlinien nicht. Hidden verbirgt die Achsenlinie und Beschriftungen; Rasterlinien sind ein separater Schalter. Set HasMajorGridlines = false (und HasMinorGridlines = false wenn Nebenrasterlinien ebenfalls sichtbar sind).
Datenbeschriftungen erscheinen nicht nach dem Setzen ShowValue = true. HasDataLabels wurde nicht zuerst für die Serie festgelegt. Set series.HasDataLabels = true, dann konfigurieren series.DataLabels.
Scaling.Maximum scheint nicht zu wirken. Bestätigen Sie, dass Sie es am richtigen Achsenobjekt setzen (chart.AxisY für die Werteachse in den meisten Diagrammtypen) und dass kein früherer Codepfad zurücksetzt Scaling zurück zu den Standardeinstellungen AxisBound().
Häufig gestellte Fragen
Wie kann ich die Legende eines Diagramms ausblenden?
Setzen Sie chart.Legend.Position = LegendPosition.None.
Wie kann ich eine Achse auf einen bestimmten Wertebereich festlegen, anstatt sie automatisch zu skalieren?
Setze AxisScaling.Minimum und/oder AxisScaling.Maximum (beide AxisBound Werte) auf chart.AxisX.Scaling oder chart.AxisY.Scaling.
Wie kann ich den Diagrammtitel ausblenden, ohne ihn zu löschen?
Setze chart.Title.Show = false. Das ChartTitle-Objekt und sein Text bleiben erhalten; nur die sichtbare Beschriftung wird unterdrückt.
Welche Diagrammtypen sind verfügbar?
ChartType listet die klassischen Familien (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, plus gestapelte und 3D-Varianten) neben den Word-2016-Typen (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Kann ich einen Datenpunkt anders formatieren als den Rest seiner Serie?
Ja – indexiere in ChartSeries.DataPoints und setze das ChartDataPoint-Format, Marker oder Explosion unabhängig.