C#實(shí)現(xiàn)高效讀取Word表格數(shù)據(jù)并導(dǎo)出為CSV/TXT
前言
在.NET開發(fā)場景中,讀取 Word 文檔中的表格數(shù)據(jù)是辦公自動化、數(shù)據(jù)導(dǎo)入、報(bào)表生成等業(yè)務(wù)的高頻需求。相比于原生操作Office COM組件(兼容性差、依賴環(huán)境),F(xiàn)ree Spire.Doc for .NET 是一款輕量、免費(fèi)、無依賴的 Word 操作組件,完美支持 C# 讀取、解析 Word(.doc/.docx)格式的表格數(shù)據(jù)。
本文將詳細(xì)介紹如何用 C# 結(jié)合 Free Spire.Doc for .NET 庫實(shí)現(xiàn) Word 表格讀取,包含完整代碼、核心API解析等。
開發(fā)環(huán)境準(zhǔn)備
1. 基礎(chǔ)環(huán)境要求
- Visual Studio 2019+
- .NET框架:.NET Framework 4.0+ / .NET 6/8(本文示例基于 .NET 6)
- 支持 Word 格式:
.doc/.docx
2. NuGet 安裝組件(極簡操作)
- 右鍵項(xiàng)目 → 管理 NuGet 程序包;
- 搜索 FreeSpire.Doc;
- 點(diǎn)擊安裝,自動引用程序集。
命令行安裝:Install-Package FreeSpire.Doc
免費(fèi)版限制:單文檔最大500段落、25個(gè)表格,滿足絕大多數(shù)個(gè)人/小型項(xiàng)目需求。
核心 API 知識點(diǎn)(必看)
Free Spire.Doc 操作 Word 表格的核心對象,層級關(guān)系清晰:
| 類名 | 作用 |
|---|---|
| Document | 加載/操作整個(gè) Word 文檔 |
| Section | Word 文檔的節(jié)(容器) |
| Table | Word 表格對象 |
| TableRow | 表格的行 |
| TableCell | 表格的單元格 |
| Paragraph.Text | 獲取單元格內(nèi)的純文本 |
讀取邏輯:加載文檔 → 遍歷文檔節(jié) → 遍歷節(jié)內(nèi)表格 → 遍歷行 → 遍歷單元格 → 提取文本。
C# 讀取 Word 表格完整代碼
以下代碼演示如何讀取 Word 文檔中所有表格的數(shù)據(jù),并輸出到控制臺。示例 Word 文檔包含兩個(gè)表格,如下圖:

場景1:讀取 Word 中所有表格數(shù)據(jù)
using Spire.Doc;
using System;
namespace ReadWordTable
{
class Program
{
static void Main(string[] args)
{
// 1. 初始化文檔對象,加載Word文件
Document doc = new Document();
doc.LoadFromFile(@"E:\表格.docx"); // 替換為你的Word路徑
// 2. 遍歷Word文檔中的所有節(jié)
foreach (Section section in doc.Sections)
{
// 3. 遍歷當(dāng)前節(jié)中的所有表格
foreach (Table table in section.Tables)
{
Console.WriteLine("===================== 讀取表格數(shù)據(jù) =====================");
// 4. 遍歷表格的每一行
foreach (TableRow row in table.Rows)
{
// 5. 遍歷當(dāng)前行的每一個(gè)單元格
foreach (TableCell cell in row.Cells)
{
// 6. 獲取單元格文本(去除空字符)
string cellText = cell.Paragraphs[0].Text.Trim();
Console.Write(cellText + "\t"); // 制表符分隔數(shù)據(jù)
}
Console.WriteLine(); // 換行
}
}
}
// 釋放資源
doc.Close();
Console.ReadLine();
}
}
}運(yùn)行代碼后,控制臺會按表格行列格式輸出所有數(shù)據(jù):

場景2:僅讀取指定表格數(shù)據(jù)(精準(zhǔn)讀取)
也可以直接通過索引獲取指定表格,讀取其中數(shù)據(jù),效率更高:
// 獲取【第一個(gè)表格】(索引從0開始) Table targetTable = doc.Sections[0].Tables[0] as Table;
進(jìn)階:將 Word 表格數(shù)據(jù)寫入 TXT / CSV 文件
在實(shí)際開發(fā)中,讀取 Word 表格后需要將數(shù)據(jù)持久化保存,最常用的是導(dǎo)出為 TXT 純文本 和 CSV 文件。
必備命名空間:操作文件需要引入 System.IO,在代碼頂部添加:
using System.IO;
示例 1:導(dǎo)出 Word 表格為純 TXT 文本
特點(diǎn):純文本格式,用制表符分隔數(shù)據(jù),可讀性強(qiáng),適合簡單存儲。
using System;
using System.IO;
using Spire.Doc;
namespace ReadWordToTxt
{
class Program
{
static void Main(string[] args)
{
// 1. 加載Word文檔
Document doc = new Document();
doc.LoadFromFile(@"E:\表格.docx");
// 2. 設(shè)置TXT保存路徑
string txtPath = @"Word表格數(shù)據(jù).txt";
// 3. 創(chuàng)建文件流,寫入數(shù)據(jù)
using (StreamWriter sw = new StreamWriter(txtPath, false, System.Text.Encoding.UTF8))
{
// 遍歷所有節(jié)、表格、行、單元格
foreach (Section section in doc.Sections)
{
foreach (Table table in section.Tables)
{
sw.WriteLine("===================== 表格數(shù)據(jù) =====================");
foreach (TableRow row in table.Rows)
{
string rowData = "";
foreach (TableCell cell in row.Cells)
{
// 拼接單元格文本,制表符分隔
rowData += cell.Paragraphs[0].Text.Trim() + "\t";
}
// 寫入一行數(shù)據(jù)
sw.WriteLine(rowData);
}
}
}
}
// 4. 釋放資源
doc.Close();
Console.WriteLine($"數(shù)據(jù)已成功寫入:{txtPath}");
Console.ReadLine();
}
}
}
生成的Word表格數(shù)據(jù).txt文件:

示例 2:導(dǎo)出 Word 表格為 CSV 文件(推薦)
亮點(diǎn)匯總:
- 自動轉(zhuǎn)義單元格逗號,避免格式錯(cuò)亂
- UTF-8 編碼,徹底解決 Excel 中文亂碼
- 直接雙擊可用 WPS/Excel 打開做數(shù)據(jù)分析
using System;
using System.IO;
using Spire.Doc;
namespace ReadWordToCsv
{
class Program
{
static void Main(string[] args)
{
// 1. 加載Word文檔
Document doc = new Document();
doc.LoadFromFile(@"E:\表格.docx");
// 2. 設(shè)置CSV保存路徑
string csvPath = @"Word表格數(shù)據(jù).csv";
// 3. 寫入CSV文件(UTF-8編碼,解決中文亂碼)
using (StreamWriter sw = new StreamWriter(csvPath, false, System.Text.Encoding.UTF8))
{
foreach (Section section in doc.Sections)
{
foreach (Table table in section.Tables)
{
foreach (TableRow row in table.Rows)
{
string rowData = "";
foreach (TableCell cell in row.Cells)
{
string cellText = cell.Paragraphs[0].Text.Trim();
// CSV格式優(yōu)化:文本加雙引號,避免單元格內(nèi)逗號導(dǎo)致格式錯(cuò)亂
rowData += $"\"{cellText}\",";
}
// 去除行尾多余逗號,寫入文件
sw.WriteLine(rowData.TrimEnd(','));
}
// 表格之間空行分隔
sw.WriteLine();
}
}
}
// 4. 釋放資源
doc.Close();
Console.WriteLine($"數(shù)據(jù)已成功寫入:{csvPath}");
Console.ReadLine();
}
}
}
生成的Word表格數(shù)據(jù).csv文件,用 Excel 打開可直接顯示規(guī)整表格:

至此,我們完成了一套完整的 Word 表格數(shù)據(jù)讀取方案。從文檔加載、表格遍歷到數(shù)據(jù)導(dǎo)出,整個(gè)過程并不復(fù)雜,關(guān)鍵點(diǎn)包含:
- 對象模型清晰:
Document、Section、Table、TableRow、TableCell層級分明,按序遍歷即可拿到所需內(nèi)容; - 代碼簡潔直接:無論是控制臺輸出還是導(dǎo)出 TXT / CSV 文件,核心代碼都在 20 行以內(nèi),易于理解和維護(hù);
- 導(dǎo)出格式靈活:TXT 適合快速查看,CSV 則更適合數(shù)據(jù)交換與后續(xù)分析,兩者都能滿足日常開發(fā)需求。
這種方式最大的優(yōu)勢在于輕量、無環(huán)境依賴,不需要在服務(wù)器或客戶端安裝 Office 軟件,也不涉及 COM 組件的繁瑣配置,部署和維護(hù)都簡單很多。對于大多數(shù)需要處理 Word 表格的業(yè)務(wù)場景——比如數(shù)據(jù)導(dǎo)入、報(bào)表自動化、內(nèi)容提取等——這套方案足以覆蓋常見需求。
如果你在實(shí)際項(xiàng)目中遇到更復(fù)雜的表格結(jié)構(gòu)(如嵌套表格、不規(guī)則合并、單元格內(nèi)混合內(nèi)容等),可以在現(xiàn)有邏輯基礎(chǔ)上進(jìn)一步擴(kuò)展。希望這篇文章能幫你快速上手,少走一些彎路。
到此這篇關(guān)于C#實(shí)現(xiàn)高效讀取Word表格數(shù)據(jù)并導(dǎo)出為CSV/TXT的文章就介紹到這了,更多相關(guān)C#讀取Word表格數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#使用Spire.Doc for .NET高效實(shí)現(xiàn)Word文檔的文本、表格和圖片數(shù)據(jù)提取
- C#結(jié)合Spire.Doc實(shí)現(xiàn)自動化提取Word表格數(shù)據(jù)
- 使用C#實(shí)現(xiàn)將Word?轉(zhuǎn)文本存儲到數(shù)據(jù)庫并進(jìn)行管理
- C#實(shí)現(xiàn)讀取多條數(shù)據(jù)記錄并導(dǎo)出到Word
- C#讀取word中表格數(shù)據(jù)的方法實(shí)現(xiàn)
- C# 使用Word模板導(dǎo)出數(shù)據(jù)的實(shí)現(xiàn)代碼
- C#實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到word或者Excel中的方法
相關(guān)文章
silverlight實(shí)現(xiàn)圖片局部放大效果的方法
這篇文章主要介紹了silverlight實(shí)現(xiàn)圖片局部放大效果的方法,結(jié)合實(shí)例形式分析了silverlight針對圖片屬性的相關(guān)操作技巧,需要的朋友可以參考下2017-03-03
淺析C#數(shù)據(jù)類型轉(zhuǎn)換的幾種形式
本篇文章是對C#中數(shù)據(jù)類型轉(zhuǎn)換的幾種形式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
c#使用linq把多列的List轉(zhuǎn)化為只有指定列的List
這篇文章主要介紹了c#使用linq把多列的List轉(zhuǎn)化為只有指定列的List,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
C#如何控制IIS動態(tài)添加刪除網(wǎng)站詳解
這篇文章主要給大家介紹了關(guān)于C#如何控制IIS動態(tài)添加刪除網(wǎng)站的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
C#?NLua?Winform實(shí)現(xiàn)熱更新的項(xiàng)目實(shí)踐
本文介紹了在.NET應(yīng)用中使用NLua庫嵌入Lua腳本,實(shí)現(xiàn)動態(tài)邏輯和熱更新功能,包括創(chuàng)建項(xiàng)目、設(shè)置公共數(shù)據(jù)、Lua腳本交互以及熱更新的具體實(shí)現(xiàn)步驟,感興趣的可以了解一下2025-11-11

