首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Word 試題導入數據庫:建議先轉 Excel 再導入,或用 C# NPOI/OpenXML 解析 Word 直接寫入

     編輯:程式設計疑難解答

需求:Word 文檔格式「1. 題目 答案xx 2. 題目 答案xx...」導入數據庫,字段為「題目」「答案」。Word 結構非結構化,直接解析極其痛苦。本文推薦「Word → Excel → 數據庫」工程化路徑,並提供 C# 直接解析代碼參考。

方案對比

方案優點缺點適用場景
人工複製到 Excel → 導入零代碼、可視化校驗、靈活調整數據量大時效率低一次性、百條以內、非技術人員操作
Word AnotherSaveAs → Excel → 導入Word 內置另存為 .xlsx,保留表格結構需 Word 安裝、格式可能亂Word 本身是表格結構
C# NPOI/OpenXML 解析 Word → 寫入 DB全自動、可集成系統、支援複雜邏輯開發成本高、需處理邊界情況定期導入、結構固定、數據量大
Python python-docx + pandas → to_sql代碼簡潔、生態豐富需 Python 環境數據分析師/後端腳本

推薦流程:Word → Excel → 數據庫

  1. Word 中將內容整理為**標準表格**(兩列:題目、答案)。
  2. 另存為 .xlsx(或複製粘貼到 Excel)。
  3. Excel 中清洗:去除編號、分列、處理換行、統一編碼。
  4. 4. 用數據庫工具(Navicat、DBeaver、MySQL Workbench)導入 Excel,或寫腳本 LOAD DATA INFILE / INSERT。

C# NPOI 直接解析 Word 代碼骨架

using NPOI.XWPF.UserModel;
using System.Data.SqlClient;

public void ImportWordToDb(string wordPath, string connStr) {
    using (var fs = new FileStream(wordPath, FileMode.Open))
    using (var doc = new XWPFDocument(fs))
    using (var conn = new SqlConnection(connStr)) {
        conn.Open();
        var cmd = new SqlCommand("INSERT INTO Questions(Title, Answer) VALUES(@t, @a)", conn);
        var pTitle = cmd.Parameters.Add("@t", SqlDbType.NVarChar, 500);
        var pAnswer = cmd.Parameters.Add("@a", SqlDbType.NVarChar, 500);

        foreach (var para in doc.Paragraphs) {
            string text = para.Text.Trim();
            if (string.IsNullOrEmpty(text)) continue;
            
            // 簡單解析:假設格式 "1. 題目內容 答案: xxx"
            var match = Regex.Match(text, @"^\d+\.\s*(.+?)\s+答案[::]\s*(.+)$");
            if (match.Success) {
                pTitle.Value = match.Groups[1].Value;
                pAnswer.Value = match.Groups[2].Value;
                cmd.ExecuteNonQuery();
            }
        }
    }
}

關鍵難點提醒

  • Word 解析:段落、表格、文本框、浮動圖片混雜,XWPFDocument 只能處理主流程段落/表格。
  • 編號識別:Word 自動編號不在文本中,需解析 NumberingDefinitions 極其複雜。
  • 答案分隔符:冒號、空格、換行、制表符混用,正則需極其健壯。
  • 圖片/公式:題目含圖需 OCR 或存圖片路徑,純文本方案無法覆蓋。

結論

「除非是長期自動化項目,否則『Word → Excel → DB』是性價比最高、坑最少的路徑。Excel 是人類最友好的結構化數據中介格式。」

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved