栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);
    }
}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号