C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# Word创建与定制图表

使用C#在Word文档中自动化创建与定制图表

作者:大丸子

在办公自动化需求不断增长的今天,越来越多的企业希望将数据可视化工作融入自动化文档生成流程中,过去,我们通常依赖 Excel 或 PowerPoint 来制作图表,再手工插入到 Word 文档中,本文将演示如何在 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 承载:它决定页面的布局、边距、方向,也包含段落、表格和图表等内容。

常用方法:

Paragraph 与 ShapeObject:图表的插入位置

图表是以 ShapeObject 的形式插入到段落 (Paragraph) 中的。段落控制位置和排版,而图表 Shape 则占据具体的区域。

关键方法:

当然可以!我将在你刚才加入的 “关键类与方法解析” 中,补充一个独立的 “### ChartType:图表类型枚举” 三级标题,与其他小节并列,内容完整、专业、自然,可直接插入使用。

下面是新增的小节内容(保持与你文章风格一致)——

ChartType:图表类型枚举

在创建图表时,ChartType 是最基础但也最关键的枚举类型,它决定了图表的整体视觉结构与功能特性。Spire.Doc 提供了与 Word 原生图表一致的图表类型,包括饼图、柱形图、折线图、面积图、气泡图、散点图等。选择合适的图表类型,不仅影响数据表达的清晰度,也决定后续能否配置轴、网格线、百分比标签等高级样式。

常用图表类型示例:

在使用 AppendChart() 时,只需传入其中一种类型即可生成对应图表,例如:

ShapeObject shape = paragraph.AppendChart(ChartType.Pie, 500, 300);

选择合适的 ChartType 不仅影响可视效果,也决定了后续能否配置坐标轴、百分比显示、数据标签内容等内容,因此在文档自动化过程中是必须重点关注的参数之一。

Chart 与 ChartSeries:图表数据与样式的核心

Chart 是 Word 图表最重要的类,它包含图表的坐标轴、数据系列、标题、图例,以及图表的数据表。

常用属性与方法:

ChartAxis(坐标轴控制)

当图表类型需要坐标轴(例如柱形图、折线图、散点图、气泡图),可通过 Axes[0]Axes[1] 分别设置 X 轴和 Y 轴。

常见配置:

ChartDataLabel:图表中的标签文本控制

用于控制显示数值、类别名称、百分比、气泡大小等信息。

常用属性:

总结

通过本文示例可以看到,在 Word 文档中动态创建图表并非难事。借助 Spire.Doc for .NET,开发者可以灵活地将数据以饼图、气泡图等形式呈现,并实现包括标题、图例、坐标轴、数据标签和数据表在内的全面定制。相比传统的手工插图方式,代码生成不仅减少重复劳动,更适合大规模、可扩展的文档生成场景。

无论你的项目需要自动生成业务报告、统计文档、市场分析图表,还是构建一套全自动化的文档处理系统,这种方法都能提供极高的灵活性与可靠性。掌握这些图表定制技巧,将帮助你构建更专业、更智能的企业级文档解决方案。

以上就是使用C#在Word文档中自动化创建与定制图表的详细内容,更多关于C# Word创建与定制图表的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文