Java代码实现PDF中表格导出到Excel

Java代码实现PDF中表格导出到Excel,第1张

Java代码实现PDF中表格导出到Excel

表格常见于 PDF 发票和财务报告中。您可能会遇到需要将 PDF 表格数据导出到 Excel 中的情况,以便您可以使用 MS Excel 提供的工具对数据进行分析。本文介绍了如何使用 Spire.Office for Java 类库从 PDF 页面中提取表格并将其导出为单独的 Excel 工作表。

本篇的代码是为了实现如上图的功能,从PDF中识别并导出Excel。

安装 Spire.Office for Java

该场景实际上是使用 Spire.PDF for Java 从 PDF 中提取表格,并使用 Spire.XLS for Java 生成 Excel 文件。为了在同一个项目中使用它们,您需要将 Spire.Office.jar 文件添加为 Java 程序中的依赖项。

可以从此链接下载 JAR 文件。如果您使用 Maven,您可以通过将以下代码添加到项目的 pom.xml 文件中轻松地在应用程序中导入 JAR 文件。


    
        com.e-iceblue
        e-iceblue
         https://repo.e-iceblue.cn/repository/maven-public/
    


    
        e-iceblue
        spire.office
        4.12.2
    
将表格数据从 PDF 导出到 Excel

以下是从某页面提取所有表格并将每个表格保存为 Excel 文档中的单独工作表的主要步骤。

在初始化 Pdfdocument 对象时加载示例 PDF 文档。创建一个 PdfTableExtractor 对象,并在其下调用 extactTable(int pageIndex) 方法提取第一页中的所有表格。创建一个 Workbook 实例。循环遍历 PdfTable[] 数组中的表,并通过其索引获取特定的表。使用 Workbook.getWorksheets.add() 方法将工作表添加到工作簿。循环遍历 PDF 表格中的单元格,并使用 PdfTable.getText(int rowIndex, int columnIndex) 方法获取特定单元格的值。然后使用 Worksheet.get(int row, int column).setText(String string) 方法将值插入工作表。使用 Workbook.saveToFile() 方法将工作簿保存为 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);
    }
}
 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5708280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存