在 C# 開發中,常遇到需將 Word 文檔(特別是包含巢狀表格、複雜排版的文檔)匯入資料庫並保留原始格式的需求。使用 Microsoft.Office.Interop.Word 直接讀取儲存格文字(Range.Text)會導致格式資訊遺失,如下程式碼所示:
for (int rowPos = 1; rowPos <= nowTable.Rows.Count; rowPos++) {
Word.Row rows = nowTable.Rows[rowPos];
if (rows != null) {
nm.CONTENT = nowTable.Cell(rowPos, 2).Range.Text;
}
}
此方式僅能取得純文字,無法保留表格結構、字型、顏色、巢狀表格等格式資訊。
最佳實踐是將 Word 文檔轉換為 HTML 格式,再將 HTML 完整存入資料庫欄位。具體步驟如下:
File.ReadAllText 或 Stream 讀取 HTML 內容。NVARCHAR(MAX) 或 TEXT)。若需將文檔中特定結構化內容(如表格特定儲存格)對應到資料庫的不同欄位,可在轉 HTML 後,使用正則表達式或 HTML 解析器(如 HtmlAgilityPack)提取目標片段,再分別存入對應欄位。
