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