翻譯|使用教程|編輯:吉煒煒|2025-02-05 15:57:04.013|閱讀 115 次
概述:本文將介紹如何利用 Spire.Doc for Java 在 Java 項目中實現從 Word 文檔中提取表格。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Word 文檔中常常有包含關鍵數據的表格,將這些表格中的數據從文檔中提取出來,可以用于進一步分析、報告制作或內容再創作等多種場景。通過使用 Java 來自動化提取 Word 文檔中的表格,開發人員能夠高效地提取和訪問這些結構化數據,并將其轉換為適用于數據庫、電子表格等的格式,從而方便在不同場景中應用數據。本文將介紹如何利用 Spire.Doc for Java 在 Java 項目中實現從 Word 文檔中提取表格。
安裝 Spire.Doc for Java
首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作為依賴項。您可以從此鏈接下載 JAR 文件;如果您使用 Maven,則可以通過在 pom.xml 文件中添加以下代碼導入 JAR 文件。
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>//repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc</artifactId> <version>13.1.3</version> </dependency> </dependencies>
使用 Java 從 Word 文檔中提取表格
借助 Spire.Doc for Java,開發人員可以使用 Section.getTables() 方法從 Word 文檔中提取表格,然后再通過遍歷行和單元格訪問表格數據。提取 Word 文檔表格的詳細操作步驟如下:
import com.spire.doc.*; import com.spire.doc.documents.Paragraph; import java.io.FileWriter; import java.io.IOException; public class ExtractWordTable { public static void main(String[] args) { // 創建一個文檔對象 Document doc = new Document(); try { // 加載一個Word文檔 doc.loadFromFile("示例.docx"); // 遍歷文檔中的各節 for (int i = 0; i < doc.getSections().getCount(); i++) { // 獲取一節 Section section = doc.getSections().get(i); // 遍歷該節中的表格 for (int j = 0; j < section.getTables().getCount(); j++) { // 獲取一個表格 Table table = section.getTables().get(j); // 收集所有表格內容 StringBuilder tableText = new StringBuilder(); for (int k = 0; k < table.getRows().getCount(); k++) { // 獲取一行 TableRow row = table.getRows().get(k); // 遍歷行中的單元格 StringBuilder rowText = new StringBuilder(); for (int l = 0; l < row.getCells().getCount(); l++) { // 獲取一個單元格 TableCell cell = row.getCells().get(l); // 遍歷段落以獲取單元格中的文本 String cellText = ""; for (int m = 0; m < cell.getParagraphs().getCount(); m++) { Paragraph paragraph = cell.getParagraphs().get(m); cellText += paragraph.getText() + " "; } if (l < row.getCells().getCount() - 1) { rowText.append(cellText).append("\t"); } else { rowText.append(cellText).append("\n"); } } tableText.append(rowText); } // 使用try-with-resources將表格文本寫入文件 try (FileWriter writer = new FileWriter("output/Tables/Section-" + (i + 1) + "-Table-" + (j + 1) + ".txt")) { writer.write(tableText.toString()); } } } } catch (IOException e) { throw new RuntimeException(e); } } }
將 Word 文檔中的表格提取到 Excel 工作表
開發人員還可以結合使用 Spire.Doc for Java 和 Spire.XLS for Java,從 Word 文檔中提取表格數據并將其寫入 Excel 工作表。首先,需要下載 Spire.XLS for Java 或添加以下 Maven 配置:
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>//repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.xls</artifactId> <version>15.1.3</version> </dependency> </dependencies>
將 Word 文檔中的表格提取到 Excel 工作簿的詳細步驟如下:
import com.spire.doc.*; import com.spire.doc.documents.Paragraph; import com.spire.xls.FileFormat; import com.spire.xls.Workbook; import com.spire.xls.Worksheet; public class ExtractWordTableToExcel { public static void main(String[] args) { // 創建一個文檔對象 Document doc = new Document(); // 創建一個工作簿對象 Workbook workbook = new Workbook(); // 移除默認的工作表 workbook.getWorksheets().clear(); try { // 加載一個Word文檔 doc.loadFromFile("示例.docx"); // 遍歷文檔中的各節 for (int i = 0; i < doc.getSections().getCount(); i++) { // 獲取一節 Section section = doc.getSections().get(i); // 遍歷該節中的表格 for (int j = 0; j < section.getTables().getCount(); j++) { // 獲取一個表格 Table table = section.getTables().get(j); // 為每個表格創建一個工作表 Worksheet sheet = workbook.getWorksheets().add("Section-" + (i + 1) + "-Table-" + (j + 1)); for (int k = 0; k < table.getRows().getCount(); k++) { // 獲取一行 TableRow row = table.getRows().get(k); for (int l = 0; l < row.getCells().getCount(); l++) { // 獲取一個單元格 TableCell cell = row.getCells().get(l); // 遍歷段落以獲取單元格中的文本 String cellText = ""; for (int m = 0; m < cell.getParagraphs().getCount(); m++) { Paragraph paragraph = cell.getParagraphs().get(m); if (m > 0 && m < cell.getParagraphs().getCount() - 1) { cellText += paragraph.getText() + "\n"; } else { cellText += paragraph.getText(); } // 將單元格文本寫入工作表中對應的單元格 sheet.getRange().get(k + 1, l + 1).setValue(cellText); } // 自動調整列寬 sheet.autoFitColumn(l + 1); } } } } } catch (Exception e) { throw new RuntimeException(e); } // 保存工作簿到文件,指定Excel版本為2016 workbook.saveToFile("output/WordTableToExcel.xlsx", FileFormat.Version2016); } }
————————————————————————————————
歡迎下載|體驗更多E-iceblue產品
獲取更多信息請咨詢 ;技術交流Q群(767755948)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網