如何使用 C# 生成和自定义 Word 图表
Source: Dev.to
生成报告与可视化数据
生成报告和可视化数据是许多业务应用中的关键任务。虽然 Microsoft Word 是文档创建的常用工具,但手动嵌入和更新图表既繁琐又容易出错。本教程演示如何使用 C# 和 Spire.Doc for .NET 库以编程方式在 Word 文档中创建和自定义图表。
环境搭建
要以编程方式在 Word 文档中创建图表,需要一个能够在不依赖 Microsoft Office 的情况下操作 Word 文件的库。Spire.Doc for .NET 提供了完整的 Word 文档操作功能,包括图表创建。
通过 NuGet 安装
- 创建新项目 – 打开 Visual Studio,创建一个新的 C# 控制台应用程序(.NET Core 或 .NET Framework)。
- 安装 NuGet 包
- 在解决方案资源管理器中右键单击项目 → 管理 NuGet 包…
- 在 浏览 选项卡中搜索
Spire.Doc。 - 选中
Spire.Doc并点击 安装。
安装完成后,你即可使用所有用于处理 Word 文档和图表的类和方法。
了解图表类型与数据系列
在编写代码之前,先了解图表的基本组成部分:图表类型和数据系列。Spire.Doc 支持 Microsoft Word 中常见的多种图表类型。
常见图表类型
- 条形/柱形图 – 对比不同类别的数值。
- 折线图 – 显示随时间或有序类别的趋势。
- 饼图 – 展示整体中各部分的比例。
- 气泡图 – 可视化三维数据(X、Y 和大小)。
这些类型在 Spire.Doc.Fields.Shapes.Charts.ChartType 中以枚举形式提供。
数据系列
数据系列是一组在图表中绘制的相关数据点。常见元素包括:
- 类别(标签) – 每个数据点的文字描述(例如月份、产品名称)。
- 数值 – 与每个类别对应的数值。
- 附加数值 – 某些图表类型所需(例如气泡大小)。
使用 ChartSeriesCollection 和 ChartSeries 来管理和添加数据系列。
步骤式图表创建
下面演示如何创建一个简单的饼图,并给出气泡图的示例。
1. 初始化文档和节
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Fields.Shapes.Charts; // Required for Chart and ChartSeries
// Create a new Word document
Document doc = new Document();
Section section = doc.AddSection();
Paragraph paragraph = section.AddParagraph();
2. 添加图表形状
// Append a pie chart (width 500, height 300)
ShapeObject shape = paragraph.AppendChart(ChartType.Pie, 500.0f, 300.0f);
Chart chart = shape.Chart; // Retrieve the Chart object
注意: 如果出现命名冲突,请使用完整命名空间
Spire.Doc.Fields.Shapes.Charts.Chart。
3. 添加数据系列
// Clear any existing series (good practice for new charts)
chart.Series.Clear();
// Define categories and values
string[] categories = { "Word", "PDF", "Excel" };
double[] dataValues = { 2.7, 3.2, 0.8 };
// Add a series to the chart
ChartSeries series = chart.Series.Add("Document Types", categories, dataValues);
示例:气泡图创建
Paragraph newPara = section.AddParagraph();
// Append a bubble chart
ShapeObject bubbleShape = newPara.AppendChart(ChartType.Bubble, 500, 300);
Chart bubbleChart = bubbleShape.Chart;
bubbleChart.Series.Clear();
ChartSeries bubbleSeries = bubbleChart.Series.Add(
"Market Share",
new[] { 2.9, 3.5, 1.1, 4.0, 4.0 }, // X-values
new[] { 1.9, 8.5, 2.1, 6.0, 1.5 }, // Y-values
new[] { 9.0, 4.5, 2.5, 8.0, 5.0 } // Bubble sizes
);
4. 保存文档
doc.SaveToFile("ChartInWordDocument.docx", FileFormat.Docx);
生成的 Word 文档

高级自定义
Spire.Doc 提供了丰富的选项来定制图表的外观和行为。
图表标题
void AppendChartTitle(Chart chart)
{
ChartTitle title = chart.Title;
title.Show = true;
title.Overlay = false; // Set to true if the title should overlap the plot area
title.Text = "Quarterly Software Usage";
title.CharacterFormat.FontSize = 12;
// Additional formatting can be applied here
}
你还可以进一步自定义坐标轴、图例、数据标签、颜色等,所有这些都可以通过 Chart 对象的属性来实现。