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łajchart.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.ShowValuei podobnych), aby jednocześnie ustawić domyślną wartość dla każdej etykiety w serii. ClearFormat()jest dostępny zarówno wChartDataPoint, jak i wChartDataLabelCollection— przywraca bezpośrednie formatowanie do wartości, które seria domyślnie dziedziczy.- Silnik oceny pól aktualizuje pola treści, takie jak
DATEiDOCPROPERTY, programowo, ale pola zależne od układu strony (numery stron w spisie treści,NUMPAGES) oceniają się jako wartości zastępcze0, 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
| Problem | Przyczyna | Naprawa |
|---|---|---|
Numery stron lub pozycje spisu treści wyświetlają 0 | Ta edycja nie zawiera silnika układu strony/renderowania | Oczekiwane 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 edycji | Zapisz 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 zapisywaniu | Najpierw przekonwertuj plik źródłowy na DOCX lub użyj wersji komercyjnej |
| Domyślna seria wykresu nadal pojawia się po dodaniu danych niestandardowych | chart.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 |
|---|---|
Document | Obiekt dokumentu głównego; Save() zapisuje do DOCX, Markdown lub zwykłego tekstu |
DocumentBuilder | Kursor wysokiego poziomu API; InsertChart() dodaje kształt wykresu |
Shape | Obiekt rysowania zwrócony przez InsertChart(); udostępnia właściwość Chart |
Chart | Obiekt wykresu; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | Dane serii (Add, Clear) oraz ustawienia poszczególnych serii |
ChartDataPoint / ChartDataPointCollection | Formatowanie punktowe; ClearFormat() |
ChartMarker / MarkerSymbol | Kształt i rozmiar znacznika punktu danych |
ChartDataLabel / ChartDataLabelCollection | Ustawienia wyświetlania etykiet per-etykieta i dla całej kolekcji |
ChartAxisTitle | Tekst tytułu wyświetlany na Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | Legenda wykresu i jej pozycje per-seria |
ChartDataTable | Tabela danych pokazana pod wykresem |
Font / Fill | Formatowanie tekstu i wypełnienie (jednolity kolor, gradient) elementów tekstowych wykresu |