Функции и возможности

Функции и возможности

Функции и возможности

На этой странице рассматриваются возможности создания диаграмм 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Форматирование текста и заливка (сплошной цвет, градиент) для текстовых элементов диаграммы

См. также:

 Русский