在辦公自動化需求不斷增長的今天,越來越多的企業希望將數據可視化工作融入自動化文檔生成流程中。過去,我們通常依賴 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 不僅影響可視效果,也決定了後續能否配置座標軸、百分比顯示、數據標籤內容等內容,因此在文檔自動化過程中是必須重點關注的參數之一。
更多圖表類型枚舉請參考 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:圖表中的標籤文本控制
用於控制顯示數值、類別名稱、百分比、氣泡大小等信息。
常用屬性:
ShowValueShowCategoryNameShowPercentage(僅餅圖)ShowBubbleSize(僅氣泡圖)
總結
通過本文示例可以看到,在 Word 文檔中動態創建圖表並非難事。藉助 Spire.Doc for .NET,開發者可以靈活地將數據以餅圖、氣泡圖等形式呈現,並實現包括標題、圖例、座標軸、數據標籤和數據表在內的全面定製。相比傳統的手工插圖方式,代碼生成不僅減少重複勞動,更適合大規模、可擴展的文檔生成場景。
無論你的項目需要自動生成業務報告、統計文檔、市場分析圖表,還是構建一套全自動化的文檔處理系統,這種方法都能提供極高的靈活性與可靠性。掌握這些圖表定製技巧,將幫助你構建更專業、更智能的企業級文檔解決方案。