Funktioner och funktionalitet
Funktioner och funktionaliteter
Den här sidan täcker diagramskapandefunktionerna för Aspose.Words FOSS för .NET med fungerande C#-exempel, byggda runt DocumentBuilder.InsertChart() och Chart objektmodell. Bibliotekets fullständiga dokumentobjektmodell (paragrafer, tabeller, stilar, bokmärken, sektioner) beskrivs i produktöversikten och i Quickstart guiden.
Skapa ett dokument med ett diagram
Infoga en diagramform med DocumentBuilder.InsertChart(), och få sedan åtkomst till dess Chart-objekt via det returnerade Shape. Rensa den automatiskt genererade serien innan du lägger till riktig data:
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");Diagramserier, datapunkter och markörer
Chart.Series är en ChartSeriesCollection. Varje ChartSeries exponerar sina individuella datapunkter via DataPoints, vilket låter dig anpassa en enskild punkts markör eller formatering utan att påverka resten av serien:
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();Diagramdatamärkningar
ChartSeries.DataLabels är en ChartDataLabelCollection som styr etiketter för varje punkt i serien på en gång. Indexera i den med DataLabels[i] för att åsidosätta en enskild 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;Diagramaxelrubriker
Chart.AxisX och Chart.AxisY exponerar var och en en ChartAxisTitle via deras Title-egenskap:
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";Diagramförklaring och teckensnitt
Chart.Legend exponerar LegendEntries, en ChartLegendEntry per serie, var och en med sin egen Font. Font implementerar fyllningsformatering, så Font.Fill.Solid() sätter en solid textfärg på samma sätt som på någon annan formaterad körning:
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;Diagramdatatabell
Chart.DataTable är en ChartDataTable som visar de underliggande serievärdena under diagrammet. Dess Has*Border- och HasLegendKeys-egenskaper styr vilka delar som är synliga:
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");Tips och bästa praxis
DocumentBuilder.InsertChart()fyller det nya diagrammet med en standardgenererad serie — anropachart.Series.Clear()innan du lägger till dina egna data, annars förblir standardvärdena kvar bredvid den.- Använd
ChartSeries.DataLabels[i]för att rikta in dig på en datamärkning när endast några få punkter behöver anpassad formatering; använd samlingsnivåegenskaperna (DataLabels.ShowValueoch liknande) för att ange ett standardvärde för varje etikett i serien på en gång. ClearFormat()är tillgänglig både påChartDataPointochChartDataLabelCollection— den återställer direkt formatering till det som serien ärver som standard.- Fältutvärderingsmotorn uppdaterar innehållsfält som
DATEochDOCPROPERTYprogrammässigt, men fält som beror på sidlayout (sidnummer i en innehållsförteckning,NUMPAGES) utvärderas till platshållarvärden0eftersom den här utgåvan inte innehåller layoutmotorn. - Se Installationsguide för att lägga till paketet via NuGet, eller bygga från källkoden, innan du refererar till dessa API:er.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
Sidnummer eller TOC-poster visar 0 | Denna utgåva innehåller inte sidlayout-/renderingsmotorn | Förväntat beteende — layoutberoende fältvärden beräknas inte; använd den kommersiella Aspose.Words för .NET om du behöver dem |
att Document.Save() till .pdf, .xps, eller en bildfiländelse misslyckas | Renderingsformat ingår inte i denna utgåva | Spara till DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown eller vanlig text istället |
Inläsning av en .doc, .rtf, .odt, .html eller .epub fil misslyckas | Endast DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown och vanlig text stöds för inläsning/sparning | Konvertera först källfilen till DOCX, eller använd den kommersiella utgåvan |
| Standarddiagramserie visas fortfarande efter att anpassad data lagts till | chart.Series.Clear() anropades inte efter InsertChart() | Rensa den standardgenererade serien innan du anropar chart.Series.Add() |
FAQ
Varför visas sidnumren i min innehållsförteckning som 0?
Denna FOSS-utgåva innehåller inte underystemet för sidlayout och rendering, så varje fältvärde som beror på sidlayout — inklusive sidnummer — utvärderas till en platshållare 0 istället för ett beräknat värde.
Kan jag exportera ett dokument till PDF eller ett bildformat?
Inte i den här utgåvan. PDF-, XPS- och bildexport beror på samma renderingsundersystem som togs bort för att hålla den här utgåvan fri. Använd den kommersiella Aspose.Words för .NET för dessa utdata.
Kan jag skapa en ny digital signatur på ett dokument?
Nej — den här utgåvan kan verifiera befintliga digitala signaturer men kan inte skapa nya.
Vilka diagramtyper stödjer InsertChart()?
InsertChart() tar ett ChartType-värde — enumet omfattar standarddiagramfamiljer såsom linje, kolumn, stapel, cirkel, område, munk, radar, spridning, aktie och ytdiagram, inklusive deras staplade och 3D-varianter.
API Reference Sammanfattning
| Klass / Egenskap | Beskrivning |
|---|---|
Document | Rotdokumentobjekt; Save() skriver till DOCX, Markdown eller vanlig text |
DocumentBuilder | Hög-nivå-markör API; InsertChart() lägger till en diagramform |
Shape | Ritobjekt som returneras av InsertChart(); exponerar egenskapen Chart property |
Chart | Diagramobjekt; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | Seriedata (Add, Clear) och inställningar per serie |
ChartDataPoint / ChartDataPointCollection | Formatering per punkt; ClearFormat() |
ChartMarker / MarkerSymbol | Form och storlek på datapunktmarkör |
ChartDataLabel / ChartDataLabelCollection | Inställningar för visning av etiketter per etikett och för hela samlingen |
ChartAxisTitle | Titeltext som visas på Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | Diagramförklaring och dess per-serie-poster |
ChartDataTable | Datatabell visas under diagrammet |
Font / Fill | Textformatering och fyllning (solid färg, gradient) på diagramtextelement |