原創|使用教程|編輯:何躍|2022-01-18 10:13:06.520|閱讀 431 次
概述:表格常見于 PDF 發票和財務報告中。您可能會遇到需要將 PDF 表格數據導出到 Excel 中的情況,以便您可以使用 MS Excel 提供的工具對數據進行分析。本文介紹了如何使用 Spire.Office for Java 從 PDF 頁面中提取表格并將其導出為單獨的 Excel 工作表。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本篇的代碼是為了實現如上圖的功能,從PDF中識別并導出Excel。
該場景實際上是使用 Spire.PDF for Java 從 PDF 中提取表格,并使用 Spire.XLS for Java 生成 Excel 文件。為了在同一個項目中使用它們,您需要將 Spire.Office.jar 文件添加為 Java 程序中的依賴項。
可以從此鏈接下載 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.office</artifactId> <version>4.12.2</version> </dependency> </dependencies>
以下是從某頁面提取所有表格并將每個表格保存為 Excel 文檔中的單獨工作表的主要步驟。
import com.spire.pdf.PdfDocument; import com.spire.pdf.utilities.PdfTable; import com.spire.pdf.utilities.PdfTableExtractor; import com.spire.xls.ExcelVersion; import com.spire.xls.Workbook; import com.spire.xls.Worksheet; public class ExtractTableDataAndSaveInExcel { public static void main(String[] args) { //加載示例PDF文檔 PdfDocument pdf = new PdfDocument("C:\\Users\\Administrator\\Desktop\\Tables.pdf"); //創建一個PdfTableExtractor實例 PdfTableExtractor extractor = new PdfTableExtractor(pdf); //從第一頁提取表格 PdfTable[] pdfTables = extractor.extractTable(0); //創建一個工作簿對象 Workbook wb = new Workbook(); //刪除默認工作表 wb.getWorksheets().clear(); //如果找到任何表格 if (pdfTables != null && pdfTables.length > 0) { //循環遍歷表格 for (int tableNum = 0; tableNum < pdfTables.length; tableNum++) { //將工作表添加到工作簿 String sheetName = String.format("Table - %d", tableNum + 1); Worksheet sheet = wb.getWorksheets().add(sheetName); //循環遍歷當前表格中的行 for (int rowNum = 0; rowNum < pdfTables[tableNum].getRowCount(); rowNum++) { //循環遍歷當前表格中的列 for (int colNum = 0; colNum < pdfTables[tableNum].getColumnCount(); colNum++) { //從當前表格單元格中提取數據 String text = pdfTables[tableNum].getText(rowNum, colNum); //將數據插入特定單元格 sheet.get(rowNum + 1, colNum + 1).setText(text); } } //自動調整列寬 for (int sheetColNum = 0; sheetColNum < sheet.getColumns().length; sheetColNum++) { sheet.autoFitColumn(sheetColNum + 1); } } } //將工作簿保存為 Excel 文件 wb.saveToFile("output/ExportTableToExcel.xlsx", ExcelVersion.Version2016); } }
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn