首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 讀取 Word 文件實作指南

     編輯:關於C語言

為何需要 COM 互通

Word 文件(.doc/.docx)為二進位結構化儲存格式,無法像純文字檔直接用 FileStream 讀取。必須透過 Microsoft Word Object Model(COM 元件)解析內容。

核心實作:使用 Word.ApplicationClass

using Word = Microsoft.Office.Interop.Word;
using System.Windows.Forms; // Clipboard

public string ReadWordDocument(string filePath)
{
    Word.Application app = new Word.Application();
    object missing = System.Reflection.Missing.Value;
    object file = filePath;

    Word.Document doc = null;
    try
    {
        doc = app.Documents.Open(ref file,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing);

        // 全選並複製到剪貼簿
        doc.ActiveWindow.Selection.WholeStory();
        doc.ActiveWindow.Selection.Copy();

        // 從剪貼簿取得純文字
        IDataObject data = Clipboard.GetDataObject();
        return data.GetData(DataFormats.Text).ToString();
    }
    finally
    {
        doc?.Close(ref missing, ref missing, ref missing);
        app.Quit(ref missing, ref missing, ref missing);
        // 釋放 COM 物件
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
    }
}

關鍵步驟解析

  1. 建立 Word Application 實例(會在背景啟動 Word 進程)
  2. 開啟文件取得 Document 物件
  3. WholeStory() 選取全文,Copy() 複製至剪貼簿
  4. 透過 Clipboard.GetDataObject() 取得 IDataObject
  5. 用 DataFormats.Text 擷取純文字內容
  6. 正確關閉文件、結束應用程式、釋放 COM 參考

現代替代方案(推薦)

Open XML SDK 範例

using DocumentFormat.OpenXml.Packaging;

public string ReadDocx(string path)
{
    using (var doc = WordprocessingDocument.Open(path, false))
    {
        return doc.MainDocumentPart.Document.Body.InnerText;
    }
}

部署注意事項

  • COM 方案要求伺服器/用戶端安裝 Microsoft Word
  • 伺服器端自動化 Word 非 Microsoft 建議做法(授權與穩定性風險)
  • 生產環境強烈建議改用 Open XML SDK 或第三方純 .NET 函式庫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案優點缺點
Open XML SDK不需安裝 Office、效能高、支援 .docx不支援舊版 .doc、學習曲線較陡
NPOI開源、跨平台、支援 .doc/.docxAPI 複雜、格式相容性較差
FreeSpire.Doc免費版功能完整、API 友善免費版有頁數限制