使用C#在Word文档中自动化创建与定制图表
作者:大丸子
引言
在办公自动化需求不断增长的今天,越来越多的企业希望将数据可视化工作融入自动化文档生成流程中。过去,我们通常依赖 Excel 或 PowerPoint 来制作图表,再手工插入到 Word 文档中。然而,当需要生成大量报告、需要频繁更新数据、或需要根据程序逻辑动态绘制不同结构的图表时,手动操作显然变得低效且容易出错。
将图表直接通过代码生成到 Word 文档里,可以让整个流程变得更加自动化、可复用且更具扩展性。无论是数据分析报告、季度业务总结,还是工程文档,你都可以通过几行 C# 代码快速绘制专业图表,并将其以最高一致性嵌入到文档中。
本文将演示如何在 Word 文档中创建图表,同时展示如何对图表的标题、图例、坐标轴、数据标签和数据表进行定制,使图表不仅正确展示数据,更具专业观感。
本文使用的方法需要 Free Spire.Doc for .NET,通过NuGet安装:Install-Package FreeSpire.Doc。
用 C# 创建 Word 文档,插入图表并保存
使用 Free Spire.Doc for .NET,我们可以实现从 Word 文档创建、图表插入、数据设置、图表设置到文档保存的全流程,下面的示例将展示如何使用 Free Spire.Doc for .NET 创建 Word 文档,并插入饼图和气泡图。
创建文档插入饼图
下面的示例首先创建一个 Word 文档,然后在其中插入一个饼图。为了便于演示,我们使用“软件使用占比”作为样例数据。
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Fields.Shapes.Charts;
Document doc = new Document();
Section section = doc.AddSection();
Paragraph paragraph = section.AddParagraph();
// 插入饼图
ShapeObject shape = paragraph.AppendChart(ChartType.Pie, 480f, 300f);
Chart pieChart = shape.Chart;
pieChart.Series.Clear();
// 分类与数据
string[] categories = { "Word", "Excel", "PDF" };
double[] usageData = { 45.2, 38.6, 16.2 };
// 添加数据系列
ChartSeries series = pieChart.Series.Add("Usage Share", categories, usageData);
// 添加标题
ChartTitle title = pieChart.Title;
title.Show = true;
title.Text = "办公软件使用占比(季度数据)";在这个阶段,我们已经成功在 Word 文档中创建了一个饼图,并且定义了分类标签与对应的数据。相比手工制作,这种方式适用于长期维护,特别是在数据基于数据库或后台系统实时生成时优势更加明显。
在文档中插入气泡图
气泡图适合用于展示三维数据(X 值、Y 值、气泡大小),常见于市场分析、产品对比或投资评估。下面的示例展示如何在 Word 文档中添加一个气泡图。
Paragraph bubblePara = section.AddParagraph();
// 插入气泡图
ShapeObject bubbleShape = bubblePara.AppendChart(ChartType.Bubble, 500f, 320f);
Chart bubbleChart = bubbleShape.Chart;
bubbleChart.Series.Clear();
// 三维数据示例
double[] xValues = { 2.3, 3.1, 4.0, 5.2, 3.8 };
double[] yValues = { 1.5, 3.7, 2.8, 4.6, 2.0 };
double[] bubbleSizes = { 10, 25, 15, 30, 18 };
ChartSeries bubbleSeries = bubbleChart.Series.Add("市场定位", xValues, yValues, bubbleSizes);
// 添加标题
ChartTitle bubbleTitle = bubbleChart.Title;
bubbleTitle.Show = true;
bubbleTitle.Text = "产品市场定位分析";通过这段代码,我们不仅展示了数据在二维空间的关系,还将气泡大小作为第三个维度进行可视化,帮助读者从多个层面理解数据结构。
保存文档
doc.SaveToFile("ChartInWordDocument.docx", FileFormat.Docx);保存后的文档即可直接打开查看,其中包含饼图与气泡图,并保留完整的图表样式、标签与标题。
以下是文档预览:

高级设置:图表标题、图例、坐标轴与数据标签的定制
一个专业可读的图表需要清晰的标题、合适的图例布局、规范的坐标轴标注以及带解释性的标签。下面展示这些辅助函数,可根据项目需求按需调用。
图表标题
void AppendChartTitle(Chart chart, string titleText)
{
ChartTitle title = chart.Title;
title.Show = true;
title.Overlay = false;
title.Text = titleText;
title.CharacterFormat.FontSize = 13;
title.CharacterFormat.Bold = true;
title.CharacterFormat.TextColor = System.Drawing.Color.DarkBlue;
}标题不仅提升图表可读性,也为文档提供清晰的上下文信息。
图例样式
void AppendChartLegend(Chart chart)
{
chart.Legend.Show = true;
chart.Legend.Position = LegendPosition.Right;
chart.Legend.CharacterFormat.FontSize = 9;
chart.Legend.CharacterFormat.Italic = true;
chart.Legend.CharacterFormat.TextColor = System.Drawing.Color.DarkGreen;
}在饼图中,图例尤其重要,便于用户快速理解每个扇区代表的内容。
坐标轴自定义(适用于柱状图、折线图等)
void AppendChartAxis(Chart chart)
{
if (chart.Axes.Count > 0)
{
chart.Axes[0].Title.Text = "产品类别";
chart.Axes[0].Title.Show = true;
}
if (chart.Axes.Count > 1)
{
chart.Axes[1].Title.Text = "销量";
chart.Axes[1].Title.Show = true;
chart.Axes[1].HasMajorGridlines = true;
}
}虽然饼图不使用坐标轴,但气泡图、折线图或柱状图都依赖轴线提供数值参考信息。
数据标签(可展示数值、百分比、气泡大小等)
void AppendChartDataLabel(Chart chart, ChartType chartType)
{
if (chart.Series.Count == 0) return;
ChartSeries series = chart.Series[0];
series.HasDataLabels = true;
var labels = series.DataLabels;
labels.ShowValue = true;
labels.ShowCategoryName = true;
labels.CharacterFormat.FontSize = 10;
labels.CharacterFormat.TextColor = System.Drawing.Color.Black;
if (chartType == ChartType.Pie)
labels.ShowPercentage = true;
if (chartType == ChartType.Bubble)
labels.ShowBubbleSize = true;
labels.Separator = " / ";
}数据标签的展示方式对于图表可解释性影响巨大。对于饼图,百分比是重要元素;对于气泡图,显示气泡大小同样关键。
添加数据表(适用于需要同时展示图表与原始数据)
void AppendChartDataTable(Chart chart)
{
chart.DataTable.Show = true;
chart.DataTable.ShowHorizontalBorder = true;
chart.DataTable.ShowVerticalBorder = true;
}数据表适用于审计要求高、需要精确数据对照的文档,例如财务报告。
关键类与方法解析
在使用 Spire.Doc 自动化创建 Word 图表的过程中,理解核心对象的职责与作用,可以让我们在后续扩展——例如添加更多图表类型、定制样式、批量生成文档——时更加得心应手。下面从实际开发最常用的维度,对相关类和属性进行简要说明。
Document 与 Section:承载整个 Word 文档结构
Document 是 Word 文件的根对象,负责创建、保存、加载文档。在文档中,每一个独立的主体部分都由 Section 承载:它决定页面的布局、边距、方向,也包含段落、表格和图表等内容。
常用方法:
Document.AddSection():添加文档主体区域Document.SaveToFile():将文档保存为.docx或.pdf
Paragraph 与 ShapeObject:图表的插入位置
图表是以 ShapeObject 的形式插入到段落 (Paragraph) 中的。段落控制位置和排版,而图表 Shape 则占据具体的区域。
关键方法:
Paragraph.AppendChart(ChartType type, float width, float height):创建图表并返回ShapeObject
当然可以!我将在你刚才加入的 “关键类与方法解析” 中,补充一个独立的 “### ChartType:图表类型枚举” 三级标题,与其他小节并列,内容完整、专业、自然,可直接插入使用。
下面是新增的小节内容(保持与你文章风格一致)——
ChartType:图表类型枚举
在创建图表时,ChartType 是最基础但也最关键的枚举类型,它决定了图表的整体视觉结构与功能特性。Spire.Doc 提供了与 Word 原生图表一致的图表类型,包括饼图、柱形图、折线图、面积图、气泡图、散点图等。选择合适的图表类型,不仅影响数据表达的清晰度,也决定后续能否配置轴、网格线、百分比标签等高级样式。
常用图表类型示例:
ChartType.Pie/Pie3D适用于比例分布展示,可显示百分比和类别标签,常用于市场份额、占比结构。ChartType.ColumnClustered(簇状柱形图)用于对比不同类别的数据,可自定义 X/Y 轴,是最常见的业务图表类型。ChartType.Line(折线图)用于展示趋势变化,可配合网格线提升可读性。ChartType.Bubble/Bubble3D用于多维数据展示(X、Y、气泡大小),适合市场分析、产品定位图。ChartType.Bar(条形图)与柱形图结构类似,但横向展示更适合长标签或排名类数据。
在使用 AppendChart() 时,只需传入其中一种类型即可生成对应图表,例如:
ShapeObject shape = paragraph.AppendChart(ChartType.Pie, 500, 300);
选择合适的 ChartType 不仅影响可视效果,也决定了后续能否配置坐标轴、百分比显示、数据标签内容等内容,因此在文档自动化过程中是必须重点关注的参数之一。
Chart 与 ChartSeries:图表数据与样式的核心
Chart 是 Word 图表最重要的类,它包含图表的坐标轴、数据系列、标题、图例,以及图表的数据表。
常用属性与方法:
chart.Series.Add(name, categories, values):添加一个数据系列chart.Title:访问图表标题chart.Legend:访问图例chart.DataTable:访问图表下方的数据表chart.Axes:访问 X/Y 轴对象(用于线形图、柱形图、折线图等)
ChartAxis(坐标轴控制)
当图表类型需要坐标轴(例如柱形图、折线图、散点图、气泡图),可通过 Axes[0]、Axes[1] 分别设置 X 轴和 Y 轴。
常见配置:
Title.Text:坐标轴标题HasMajorGridlines:是否显示主要网格线Labels.Position:轴标签位置
ChartDataLabel:图表中的标签文本控制
用于控制显示数值、类别名称、百分比、气泡大小等信息。
常用属性:
ShowValueShowCategoryNameShowPercentage(仅饼图)ShowBubbleSize(仅气泡图)
总结
通过本文示例可以看到,在 Word 文档中动态创建图表并非难事。借助 Spire.Doc for .NET,开发者可以灵活地将数据以饼图、气泡图等形式呈现,并实现包括标题、图例、坐标轴、数据标签和数据表在内的全面定制。相比传统的手工插图方式,代码生成不仅减少重复劳动,更适合大规模、可扩展的文档生成场景。
无论你的项目需要自动生成业务报告、统计文档、市场分析图表,还是构建一套全自动化的文档处理系统,这种方法都能提供极高的灵活性与可靠性。掌握这些图表定制技巧,将帮助你构建更专业、更智能的企业级文档解决方案。
以上就是使用C#在Word文档中自动化创建与定制图表的详细内容,更多关于C# Word创建与定制图表的资料请关注脚本之家其它相关文章!
