Funkcje i funkcjonalności

Funkcje i funkcjonalności

Funkcje i możliwości

Ta strona opisuje możliwości tworzenia wykresów w Aspose.Words FOSS dla .NET z działającymi przykładami C#, opartymi na DocumentBuilder.InsertChart() i Chart model obiektowy. Pełny model obiektowy dokumentu biblioteki (paragraphs, tables, styles, bookmarks, sections) jest opisany w przeglądzie produktu oraz w Quickstart przewodniku.


Tworzenie dokumentu z wykresem

Wstaw kształt wykresu za pomocą DocumentBuilder.InsertChart(), a następnie uzyskaj dostęp do jego obiektu Chart poprzez zwrócony Shape. Wyczyść domyślnie wygenerowaną serię przed dodaniem rzeczywistych danych:

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 wykresu, punkty danych i znaczniki

Chart.Series jest ChartSeriesCollection. Każdy ChartSeries udostępnia swoje poszczególne punkty danych przez DataPoints, co pozwala dostosować znacznik lub formatowanie pojedynczego punktu bez wpływu na resztę serii:

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();

Etykiety danych wykresu

ChartSeries.DataLabels jest ChartDataLabelCollection, które kontroluje etykiety dla każdego punktu w serii jednocześnie. Odwołaj się do niego za pomocą DataLabels[i], aby nadpisać pojedynczy 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;

Tytuły osi wykresu

Chart.AxisX i Chart.AxisY każdy udostępnia ChartAxisTitle za pośrednictwem własności 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 wykresu i czcionki

Chart.Legend udostępnia LegendEntries, jeden ChartLegendEntry na serię, każdy z własnym Font. Font implementuje formatowanie wypełnienia, więc Font.Fill.Solid() ustawia jednolity kolor tekstu tak samo, jak w przypadku dowolnego innego sformatowanego fragmentu:

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;

Tabela danych wykresu

Chart.DataTable jest ChartDataTable, który wyświetla podstawowe wartości serii pod wykresem. Jego własności Has*Border i HasLegendKeys kontrolują, które części są widoczne:

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");

Wskazówki i najlepsze praktyki

  • DocumentBuilder.InsertChart() wypełnia nowy wykres domyślnie generowaną serią — wywołaj chart.Series.Clear() przed dodaniem własnych danych, w przeciwnym razie domyślne pozostaną obok niej.
  • Użyj ChartSeries.DataLabels[i], aby wskazać jedną etykietę danych, gdy tylko kilka punktów wymaga niestandardowego formatowania; użyj właściwości na poziomie kolekcji (DataLabels.ShowValue i podobnych), aby jednocześnie ustawić domyślną wartość dla każdej etykiety w serii.
  • ClearFormat() jest dostępny zarówno w ChartDataPoint, jak i w ChartDataLabelCollection — przywraca bezpośrednie formatowanie do wartości, które seria domyślnie dziedziczy.
  • Silnik oceny pól aktualizuje pola treści, takie jak DATE i DOCPROPERTY, programowo, ale pola zależne od układu strony (numery stron w spisie treści, NUMPAGES) oceniają się jako wartości zastępcze 0, ponieważ ta edycja nie zawiera silnika układu.
  • Zobacz Przewodnik instalacji aby dodać pakiet za pomocą NuGet, lub zbudować go ze źródeł, przed odwoływaniem się do tych interfejsów API.

Typowe problemy

ProblemPrzyczynaNaprawa
Numery stron lub pozycje spisu treści wyświetlają 0Ta edycja nie zawiera silnika układu strony/renderowaniaOczekiwane zachowanie — wartości pól zależne od układu nie są obliczane; użyj wersji komercyjnej Aspose.Words dla .NET jeśli ich potrzebujesz
Document.Save() do .pdf, .xps lub rozszerzenie obrazu nie powiodło sięFormaty renderowania nie są zawarte w tej edycjiZapisz zamiast tego jako DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown lub zwykły tekst
Ładowanie pliku .doc, .rtf, .odt, .html lub .epub nie powiodło sięTylko DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown i zwykły tekst są obsługiwane przy wczytywaniu i zapisywaniuNajpierw przekonwertuj plik źródłowy na DOCX lub użyj wersji komercyjnej
Domyślna seria wykresu nadal pojawia się po dodaniu danych niestandardowychchart.Series.Clear() nie został wywołany po InsertChart()Wyczyść domyślnie wygenerowaną serię przed wywołaniem chart.Series.Add()

FAQ

Dlaczego numery stron w moim spisie treści wyświetlają się jako 0?

Ta edycja FOSS nie zawiera podsystemu układu strony i renderowania, więc każda wartość pola zależna od układu strony — w tym numery stron — jest oceniana jako placeholder 0 zamiast wyliczonej wartości.

Czy mogę wyeksportować dokument do PDF lub formatu obrazu?

Nie w tej edycji. Eksport do PDF, XPS i obrazów zależy od tego samego podsystemu renderowania, który został usunięty, aby ta edycja była darmowa. Użyj komercyjnego Aspose.Words dla .NET dla tych wyjść.

Czy mogę utworzyć nowy podpis cyfrowy w dokumencie?

Nie — ta edycja może weryfikować istniejące podpisy cyfrowe, ale nie może tworzyć nowych.

Jakie typy wykresów obsługuje InsertChart()?

InsertChart() przyjmuje wartość ChartType — wyliczenie obejmuje standardowe rodziny wykresów, takie jak liniowy, kolumnowy, słupkowy, kołowy, obszarowy, pierścieniowy, radarowy, rozproszony, giełdowy i powierzchniowy, w tym ich wersje skumulowane i 3D.

API Reference Podsumowanie

Klasa / WłaściwośćOpis
DocumentObiekt dokumentu głównego; Save() zapisuje do DOCX, Markdown lub zwykłego tekstu
DocumentBuilderKursor wysokiego poziomu API; InsertChart() dodaje kształt wykresu
ShapeObiekt rysowania zwrócony przez InsertChart(); udostępnia właściwość Chart
ChartObiekt wykresu; Series, Legend, DataTable, AxisX, AxisY, Title
ChartSeries / ChartSeriesCollectionDane serii (Add, Clear) oraz ustawienia poszczególnych serii
ChartDataPoint / ChartDataPointCollectionFormatowanie punktowe; ClearFormat()
ChartMarker / MarkerSymbolKształt i rozmiar znacznika punktu danych
ChartDataLabel / ChartDataLabelCollectionUstawienia wyświetlania etykiet per-etykieta i dla całej kolekcji
ChartAxisTitleTekst tytułu wyświetlany na Chart.AxisX / Chart.AxisY
ChartLegend / ChartLegendEntryLegenda wykresu i jej pozycje per-seria
ChartDataTableTabela danych pokazana pod wykresem
Font / FillFormatowanie tekstu i wypełnienie (jednolity kolor, gradient) elementów tekstowych wykresu

Zobacz także

 Polski