如何在 Java 中使用 GroupDocs.Parser 解析 docx 表格

從 Microsoft Word .docx 檔案中解析表格可能相當繁瑣,尤其在您同時需要速度與可靠性時。GroupDocs.Parser 為您提供高效能、低記憶體佔用的方式,以純 Java 讀取 DOCX 文件中的每一列與每一格。在本教學中,您將了解此方法的重要性、如何設定,以及今天即可執行的精確步驟,以從 Word 檔案中提取表格。

快速回答

  • 哪個函式庫負責提取? GroupDocs.Parser for Java.
  • 支援哪種檔案格式? Microsoft Word .docx (and other Office formats).
  • 我需要授權嗎? A free trial works for tests; a permanent license is required for production.
  • 我可以處理大型文件嗎? Yes—process nodes selectively to keep memory usage low.
  • 記住的主要關鍵字是什麼? how to parse docx.

什麼是 GroupDocs.Parser 表格提取?

GroupDocs.Parser 表格提取會讀取 DOCX 檔案的內部 OPC 套件,定位每個 <table> XML 元素,並將其列 (<tr>) 與儲存格 (<td>) 以 Java 物件返回。SDK 抽象化了低階的 XML 處理,讓您專注於所需的資料。

為什麼在 Java 中使用 GroupDocs.Parser?

GroupDocs.Parser 能在 每 100 頁文件低於 0.2 秒 的時間內提取表格,並支援 超過 50 種輸入與輸出格式。API 僅解析您請求的 XML 節點,較完整文件解析函式庫減少 CPU 與記憶體消耗。它亦能即時處理損毀或受密碼保護的檔案。

前置條件

  • Java Development Kit (JDK) 8 或更新版本。
  • Maven(或其他建置工具)用於相依管理。
  • 具備基本的 Java I/O 與 XML 概念。

設定 GroupDocs.Parser(Java 版)

您可以透過兩種常見方式將函式庫加入專案。

使用 Maven

將 GroupDocs 儲存庫與 parser 相依性加入您的 pom.xml:

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/parser/java/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-parser</artifactId>
        <version>25.5</version>
    </dependency>
</dependencies>

直接下載

如果您不想使用 Maven,可從官方網站下載最新的 JAR: GroupDocs releases.

授權取得

  • Free trial – 所有功能皆可供評估使用。
  • Temporary license – 完整功能於有限期間內提供。
  • Purchase – 生產環境的永久授權。

如何在 Java 中使用 GroupDocs.Parser 解析 docx 表格?

Parser 是核心類別,提供存取文件內部結構的功能,並支援節點層級的遍歷。使用 Parser 實例載入 DOCX 檔案,定位每個 <table> 節點,並遍歷其列與儲存格。這個三步驟模式——初始化、遍歷、處理——涵蓋完整的提取工作流程,同時保持低記憶體使用。

步驟 1:初始化解析器

Parser 是讀取文件內部結構的入口點。try‑with‑resources 區塊確保解析器會自動關閉,防止資源泄漏。

try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/sample.docx")) {
    Document document = parser.getStructure();
    readNode(document.getDocumentElement());
} catch (Exception e) {
    e.printStackTrace(); // Handle exceptions appropriately
}

步驟 2:遍歷 XML 結構

遞迴走訪文件的 XML 樹,收集名稱等於 "table" 的節點。跳過非表格節點可大幅加快大型檔案的處理速度。

private static void readNode(Node node) {
    NodeList nodes = node.getChildNodes();
    for (int i = 0; i < nodes.getLength(); i++) {
        Node n = nodes.item(i);
        
        if ("table".equalsIgnoreCase(n.getNodeName())) {
            processNode(n); // Process the table node
        }
        
        readNode(n); // Recursively process child nodes
    }
}

步驟 3:處理表格節點

當找到表格節點時,遍歷其子 <tr>(列)元素,接著遍歷每個 <td>(儲存格)元素。範例會印出節點名稱與值,但您可以將 System.out 呼叫替換為將資料存入清單、寫入 CSV,或插入資料庫的邏輯。

private static void processNode(Node node) {
    NodeList nodes = node.getChildNodes();
    for (int i = 0; i < nodes.getLength(); i++) {
        Node n = nodes.item(i);
        
        if ("tr".equalsIgnoreCase(n.getNodeName()) || "td".equalsIgnoreCase(n.getNodeName())) {
            System.out.println("Node Name: " + n.getNodeName());
            processNode(n); // Recursively process sub-nodes
            System.out.println("/" + n.getNodeName() + ": End of node processing.");
        } else {
            String value = n.getNodeValue();
            if (value != null) {
                System.out.print("Node Value: " + value);
            }
            processNode(n); // Recursively process sub-nodes
        }
    }
}

主要考量

  • Error handling – 將 I/O 與解析呼叫包在 try‑catch 區塊中;記錄有意義的訊息。
  • Performance – 跳過非表格節點以減少遍歷時間,特別是在大型文件時。

如何在 Java 中提取表格?

TableExtractor 是高階輔助類別,可掃描文件並返回代表每個偵測到的表格的 Table 物件集合。使用 SDK 內建的 TableExtractor,您無需自行撰寫 XML 遍歷即可提取表格。對 Parser 物件呼叫 extractTables(),即可取得可供後續處理的 Table 物件集合。每個 Table 包含可遍歷的列與儲存格,能轉換為 CSV 或映射至領域模型,使下游整合變得簡單。

如何在 Java 中處理大型文件

LoadOptions 允許您設定解析器載入文件的方式,包括為提升記憶體效率的延遲載入。對於數百頁的 DOCX 檔案,啟用串流處理:將解析器的 loadOptions 設為 LoadOptions.lazyLoad(true),並僅限制遍歷 <table> 節點。此方法即使在 500 頁文件中,也能將峰值記憶體使用維持在 100 MB 以下。

實務應用案例

  1. Data migration – 將舊有表格匯入關聯式資料庫或 CSV 以供分析。
  2. Content management systems – 使用者上傳 Word 報告時,自動填入 CMS 欄位。
  3. Automated reporting – 從定期的 Word 文件中提取表格資料,生成儀表板。

效能技巧

  • Selective traversal – 使用 XPath 或節點類型檢查直接跳至 <table> 元素。
  • Stream processing – 對於巨量檔案,處理 XML 樹的區塊,而非將整個結構載入記憶體。
  • Reuse parser instances – 批次從多個文件提取時,重複使用單一 Parser 設定,以避免重複初始化的開銷。

常見問題

Q: 什麼是 GroupDocs.Parser?
A: GroupDocs.Parser 是一個 Java 函式庫,可解析多種文件格式,讓您在不需要原始應用程式的情況下提取文字、表格、影像與中繼資料。

Q: 如何使用 GroupDocs.Parser 高效處理大型 Word 檔案?
A: 以串流方式處理節點,僅聚焦於 <table> 元素,並啟用延遲載入,以避免將整個文件載入記憶體。

Q: GroupDocs.Parser 能從受密碼保護的文件中提取資料嗎?
A: 可以——在建立 Parser 實例時提供密碼,即可解鎖檔案。

Q: 提取表格時常見的陷阱是什麼?
A: 遺漏嵌套表格、假設結構為平面、未處理空儲存格。請確保遞迴涵蓋所有子節點。

Q: GroupDocs.Parser 適用於商業專案嗎?
A: 絕對適用。它提供彈性的授權方案,適合新創、企業以及介於兩者之間的所有情況。

其他資源

準備好以可靠的文件解析為您的 Java 應用程式加速了嗎?取得函式庫,依照上述步驟操作,即可立即開始提取表格!


最後更新: 2026-09-22
測試環境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs

相關教學