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

C# 從 Word 表格提取指定儲存格資料:完整實作指南

     編輯:關於C語言

專案背景與挑戰

需從 Word 文件(`.doc`)指定表格的指定儲存格讀取文字。網路資料良莠不齊:碼農複製貼上、缺自訂類別實作、無架構說明。經數週篩選整理,形成可落地方案。

前置準備

  1. 建立 `doc1.doc`,插入表格並填入資料:
IdName
1Wulei
2Jack
  1. 專案參考 `Microsoft.Office.Interop.Word`(需安裝 Office 或 PIAs)。

核心程式碼架構


using Word = Microsoft.Office.Interop.Word;

public string GetCellText(string filePath, int tableIndex, int row, int col)
{
    Word.Application app = null;
    Word.Document doc = null;
    try
    {
        app = new Word.Application { Visible = false };
        doc = app.Documents.Open(filePath, ReadOnly: true);
        if (doc.Tables.Count < tableIndex) return null;
        var table = doc.Tables[tableIndex];
        if (table.Rows.Count < row || table.Columns.Count < col) return null;
        return table.Cell(row, col).Range.Text.Trim('\r', '\a'); // 移除儲存格結束符
    }
    finally
    {
        doc?.Close(false);
        app?.Quit(false);
    }
}

關鍵技術點

  • COM 物件釋放:`finally` 區塊確保 `Document.Close`、`Application.Quit`,避免 Word 進程殘留(記憶體洩漏)。
  • 唯讀開啟:`ReadOnly: true` 不鎖定檔案,支援並發讀取。
  • 索引基準:Word 物件模型**索引從 1 開始**(表格、列、欄皆同)。
  • 文字清理:`Cell.Range.Text` 末尾含 `\r\a`(儲存格結束符),需 `Trim`。
  • 例外處理:檔案不存在、格式錯誤、索引越界皆需捕獲並轉換為友善錯誤訊息。

UI 整合範例

WinForms 介面:`TextBox` 顯示檔案路徑、`Button` 觸發 `OpenFileDialog`、第二個 `Button` 讀取第 2 列第 1 欄 → 顯示於另一 `TextBox`。截圖見原文。

進階擴展方向

  1. 支援 `.docx`:改用 `Open XML SDK`(`DocumentFormat.OpenXml`),無需安裝 Office、效能更高、適合伺服器端。
  2. 批次處理:遍歷資料夾所有 Word,提取同位置儲存格彙總匯出 Excel/CSV。
  3. 表格識別:依標題列關鍵字定位目標表格,而非硬編碼索引。
  4. 合併儲存格處理:`Cell.Merge` 後索引位移,需掃描 `Row.Index`/`Column.Index` 實際定位。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved