最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)高效讀取Word表格數(shù)據(jù)并導(dǎo)出為CSV/TXT

 更新時(shí)間:2026年03月29日 09:03:32   作者:Eiceblue  
在.NET開發(fā)場景中,讀取 Word 文檔中的表格數(shù)據(jù)是辦公自動化、數(shù)據(jù)導(dǎo)入、報(bào)表生成等業(yè)務(wù)的高頻需求,本文將詳細(xì)介紹如何用 C# 結(jié)合 Free Spire.Doc for .NET 庫實(shí)現(xiàn) Word 表格讀取,有需要的小伙伴可以了解下

前言

在.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 文檔
SectionWord 文檔的節(jié)(容器)
TableWord 表格對象
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)包含:

  • 對象模型清晰DocumentSection、TableTableRow、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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# ?的使用小結(jié)

    C# ?的使用小結(jié)

    本文介紹了C#中可空類型標(biāo)記符(?)及其相關(guān)運(yùn)算符的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • silverlight實(shí)現(xiàn)圖片局部放大效果的方法

    silverlight實(shí)現(xiàn)圖片局部放大效果的方法

    這篇文章主要介紹了silverlight實(shí)現(xiàn)圖片局部放大效果的方法,結(jié)合實(shí)例形式分析了silverlight針對圖片屬性的相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • C#重寫DataGridView

    C#重寫DataGridView

    這篇文章主要為大家詳細(xì)介紹了C#重寫DataGridView的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • C# task應(yīng)用實(shí)例詳解

    C# task應(yīng)用實(shí)例詳解

    這篇文章主要介紹了如何在C#中一些應(yīng)用task的實(shí)例,簡單易懂的代碼能更好的幫你學(xué)習(xí),有興趣的朋友可以了解下
    2020-05-05
  • 淺析C#數(shù)據(jù)類型轉(zhuǎn)換的幾種形式

    淺析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

    這篇文章主要介紹了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)站詳解

    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í)踐

    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
  • c#之事件用法

    c#之事件用法

    這篇文章介紹了c#中事件的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#實(shí)現(xiàn)一鍵清空控件值的示例代碼

    C#實(shí)現(xiàn)一鍵清空控件值的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#語言實(shí)現(xiàn)一鍵清空控件值的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定幫助,需要的可以參考一下
    2022-09-09

最新評論

萍乡市| 浙江省| 鹰潭市| 交城县| 成安县| 双鸭山市| 乌兰浩特市| 兴义市| 三门峡市| 江北区| 屯留县| 图片| 岳阳市| 通榆县| 金沙县| 收藏| 福州市| 洛川县| 隆安县| 罗江县| 合作市| 资兴市| 米易县| 云浮市| 灵山县| 宁南县| 张家界市| 大理市| 怀仁县| 晋中市| 阿克苏市| 尚义县| 桂林市| 苗栗市| 汤原县| 连州市| 霍城县| 建昌县| 永泰县| 汨罗市| 临武县|