Funktioner och funktionalitet

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 — anropa chart.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.ShowValue och 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å ChartDataPoint och ChartDataLabelCollection — den återställer direkt formatering till det som serien ärver som standard.
  • Fältutvärderingsmotorn uppdaterar innehållsfält som DATE och DOCPROPERTY programmässigt, men fält som beror på sidlayout (sidnummer i en innehållsförteckning, NUMPAGES) utvärderas till platshållarvärden 0 eftersom 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

ProblemOrsakÅtgärd
Sidnummer eller TOC-poster visar 0Denna utgåva innehåller inte sidlayout-/renderingsmotornFö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 misslyckasRenderingsformat ingår inte i denna utgåvaSpara till DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown eller vanlig text istället
Inläsning av en .doc, .rtf, .odt, .html eller .epub fil misslyckasEndast DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown och vanlig text stöds för inläsning/sparningKonvertera först källfilen till DOCX, eller använd den kommersiella utgåvan
Standarddiagramserie visas fortfarande efter att anpassad data lagts tillchart.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 / EgenskapBeskrivning
DocumentRotdokumentobjekt; Save() skriver till DOCX, Markdown eller vanlig text
DocumentBuilderHög-nivå-markör API; InsertChart() lägger till en diagramform
ShapeRitobjekt som returneras av InsertChart(); exponerar egenskapen Chart property
ChartDiagramobjekt; Series, Legend, DataTable, AxisX, AxisY, Title
ChartSeries / ChartSeriesCollectionSeriedata (Add, Clear) och inställningar per serie
ChartDataPoint / ChartDataPointCollectionFormatering per punkt; ClearFormat()
ChartMarker / MarkerSymbolForm och storlek på datapunktmarkör
ChartDataLabel / ChartDataLabelCollectionInställningar för visning av etiketter per etikett och för hela samlingen
ChartAxisTitleTiteltext som visas på Chart.AxisX / Chart.AxisY
ChartLegend / ChartLegendEntryDiagramförklaring och dess per-serie-poster
ChartDataTableDatatabell visas under diagrammet
Font / FillTextformatering och fyllning (solid färg, gradient) på diagramtextelement

Se även

 Svenska