Функції та можливості

Функції та можливості

Функції та можливості

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

Дивіться також

 Українська