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