Функции и возможности
Функции и возможности
На этой странице рассматриваются возможности создания диаграмм Aspose.Words FOSS для .NET с рабочими примерами C#, построенными вокруг DocumentBuilder.InsertChart() и Chart объектной модели. Полная объектная модель документа библиотеки (абзацы, таблицы, стили, закладки, разделы) описана в обзоре продукта и в Quickstart руководстве.
Создание документа с диаграммой
Вставьте форму диаграммы с помощью DocumentBuilder.InsertChart(), затем получите доступ к её объекту Chart через возвращённый Shape. Очистите автоматически сгенерированную серию перед добавлением реальных данных:
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");Серии диаграммы, точки данных и маркеры
Chart.Series является ChartSeriesCollection. Каждый ChartSeries раскрывает свои отдельные точки данных через DataPoints, что позволяет настроить маркер или форматирование отдельной точки без влияния на остальные серии:
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();Подписи данных диаграммы
ChartSeries.DataLabels — это ChartDataLabelCollection, который управляет метками для каждой точки в серии сразу. Обратитесь к нему через DataLabels[i], чтобы переопределить отдельный 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;Заголовки осей диаграммы
Chart.AxisX и Chart.AxisY каждый предоставляет ChartAxisTitle через своё свойство 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";Легенда диаграммы и шрифты
Chart.Legend предоставляет LegendEntries, один ChartLegendEntry на серию, каждый со своим Font. Font реализует форматирование заливки, поэтому Font.Fill.Solid() задаёт сплошной цвет текста так же, как это делается для любого другого отформатированного фрагмента:
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;Таблица данных диаграммы
Chart.DataTable — это ChartDataTable, который отображает базовые значения серии под диаграммой. Его свойства Has*Border и HasLegendKeys управляют тем, какие части видимы:
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");Подсказки и лучшие практики
DocumentBuilder.InsertChart()заполняет новую диаграмму сгенерированным по умолчанию рядом — вызовитеchart.Series.Clear()перед добавлением своих данных, иначе значения по умолчанию останутся рядом с ней.- Используйте
ChartSeries.DataLabels[i], чтобы выделить одну метку данных, когда только несколько точек требуют пользовательского форматирования; используйте свойства уровня коллекции (DataLabels.ShowValueи аналогичные), чтобы задать значение по умолчанию для каждой метки в серии сразу. ClearFormat()доступен как вChartDataPoint, так и вChartDataLabelCollection— он сбрасывает прямое форматирование к тому, что серия наследует по умолчанию.- Механизм оценки полей программно обновляет поля содержимого, такие как
DATEиDOCPROPERTY, но поля, зависящие от макета страницы (номера страниц в оглавлении,NUMPAGES), оцениваются как значения-заполнители0, потому что данное издание не включает движок макета. - Смотрите Руководство по установке чтобы добавить пакет через NuGet, или собрать из исходного кода, прежде чем обращаться к этим API.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
Номера страниц или записи оглавления показывают 0 | Это издание не включает движок макета/рендеринга страниц | Ожидаемое поведение — значения полей, зависящие от макета, не вычисляются; используйте коммерческую Aspose.Words для .NET если они вам нужны |
Document.Save() в .pdf, .xps или расширение изображения не удалось | Форматы рендеринга не включены в это издание | Сохраните в DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown или обычный текст вместо этого |
Загрузка файла .doc, .rtf, .odt, .html или .epub не удалась | Поддерживаются только DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown и обычный текст для загрузки/сохранения | Сначала преобразуйте исходный файл в DOCX или используйте коммерческую редакцию |
| Серия диаграммы по умолчанию всё ещё отображается после добавления пользовательских данных | chart.Series.Clear() не был вызван после InsertChart() | Очистите автоматически сгенерированную серию перед вызовом chart.Series.Add() |
FAQ
Почему номера страниц в моём оглавлении получаются равными 0?
Это издание FOSS не включает подсистему макета страниц и рендеринга, поэтому любое значение поля, зависящее от макета страницы — включая номера страниц — оценивается как заполнитель 0, а не как вычисленное значение.
Могу ли я экспортировать документ в PDF или в графический формат?
В этом издании нет. Экспорт в PDF, XPS и графические форматы зависит от той же подсистемы рендеринга, которая была удалена, чтобы сделать это издание бесплатным. Используйте коммерческий Aspose.Words для .NET для этих выводов.
Могу ли я создать новую цифровую подпись в документе?
Нет — это издание может проверять существующие цифровые подписи, но не может создавать новые.
Какие типы диаграмм поддерживает InsertChart()?
InsertChart() принимает значение ChartType — перечисление охватывает стандартные семейства диаграмм, такие как линейные, столбчатые, гистограммы, круговые, площадные, кольцевые, радиальные, точечные, финансовые и поверхностные диаграммы, включая их накопленные и 3D-варианты.
API Reference Итоги
| Класс / Свойство | Описание: |
|---|---|
Document | Корневой объект документа; Save() записывает в DOCX, Markdown или обычный текст |
DocumentBuilder | Курсор высокого уровня API; InsertChart() добавляет форму диаграммы |
Shape | Объект рисования, возвращаемый InsertChart(); раскрывает свойство Chart |
Chart | Объект диаграммы; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | Данные серии (Add, Clear) и настройки для каждой серии |
ChartDataPoint / ChartDataPointCollection | Форматирование точек; ClearFormat() |
ChartMarker / MarkerSymbol | Форма и размер маркера точки данных |
ChartDataLabel / ChartDataLabelCollection | Настройки отображения меток для отдельной метки и для всей коллекции |
ChartAxisTitle | Текст заголовка, отображаемый на Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | Легенда диаграммы и её записи для каждой серии |
ChartDataTable | Таблица данных, отображаемая под диаграммой |
Font / Fill | Форматирование текста и заливка (сплошной цвет, градиент) для текстовых элементов диаграммы |