如何在 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 以下。
實務應用案例
- Data migration – 將舊有表格匯入關聯式資料庫或 CSV 以供分析。
- Content management systems – 使用者上傳 Word 報告時,自動填入 CMS 欄位。
- 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