博客 / 詳情

返回

使用 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);

保存後的文檔即可直接打開查看,其中包含餅圖與氣泡圖,並保留完整的圖表樣式、標籤與標題。

以下是文檔預覽:

用C#在Word文檔中創建餅圖和氣泡圖


高級設置:圖表標題、圖例、座標軸與數據標籤的定製

一個專業可讀的圖表需要清晰的標題、合適的圖例佈局、規範的座標軸標註以及帶解釋性的標籤。下面展示這些輔助函數,可根據項目需求按需調用。

圖表標題

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 不僅影響可視效果,也決定了後續能否配置座標軸、百分比顯示、數據標籤內容等內容,因此在文檔自動化過程中是必須重點關注的參數之一。

更多圖表類型枚舉請參考 Spire.Doc for .NET 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:圖表中的標籤文本控制

用於控制顯示數值、類別名稱、百分比、氣泡大小等信息。

常用屬性:

  • ShowValue
  • ShowCategoryName
  • ShowPercentage(僅餅圖)
  • ShowBubbleSize(僅氣泡圖)

總結

通過本文示例可以看到,在 Word 文檔中動態創建圖表並非難事。藉助 Spire.Doc for .NET,開發者可以靈活地將數據以餅圖、氣泡圖等形式呈現,並實現包括標題、圖例、座標軸、數據標籤和數據表在內的全面定製。相比傳統的手工插圖方式,代碼生成不僅減少重複勞動,更適合大規模、可擴展的文檔生成場景。

無論你的項目需要自動生成業務報告、統計文檔、市場分析圖表,還是構建一套全自動化的文檔處理系統,這種方法都能提供極高的靈活性與可靠性。掌握這些圖表定製技巧,將幫助你構建更專業、更智能的企業級文檔解決方案。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.