PDF读取表格写入EXCEL

声明:只记录,不推荐,因为e-iceblue的spire.pdf是收费的,要licence。

pom引入

XML 复制代码
<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
<dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.pdf</artifactId>
            <version>10.7.3</version>
        </dependency>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.xls</artifactId>
            <version>14.7.7</version>
        </dependency>

demo代码:

java 复制代码
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.utilities.PdfTable;
import com.spire.pdf.utilities.PdfTableExtractor;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
/**
 * @className: PDF2ExcelUtil
 * @description:
 * @author: spirit
 * @date: 2024-09-05 10:20
 * @version: 1.0
 **/

public class PDF2ExcelUtil {

    public static void convertPDF(){
        //创建PdfDocument实例
        PdfDocument pdf = new PdfDocument();

        //加载PDF文档
        pdf.loadFromFile("E:/xxx-已加密.pdf","123");

        //保存为Excel
        pdf.saveToFile("E:/PDFToXLS.xlsx", FileFormat.XLSX);
    }
    public static void main(String[] args) {
        //创建PdfDocument实例
        PdfDocument pdf = new PdfDocument();

        //加载PDF文档
        pdf.loadFromFile("E:/xxx-已加密.pdf","123");


        //实例化Workbook类的对象
        Workbook workbook = new Workbook();
        //清除默认工作表
        workbook.getWorksheets().clear();

        //实例化PdfTableExtractor类的对象
        PdfTableExtractor extractor = new PdfTableExtractor(pdf);

        int sheetNumber = 1;

        //遍历PDF页面
        for (int pageIndex = 0; pageIndex < pdf.getPages().getCount(); pageIndex++) {
            //提取页面中的表格存入PdfTable[]数组
            PdfTable[] tableList = extractor.extractTable(pageIndex);
            if (tableList != null && tableList.length > 0) {
                //遍历表格
                for (PdfTable table : tableList) {
                    //添加工作表
                    Worksheet sheet = workbook.getWorksheets().add("Sheet" + sheetNumber);

                    //获取表格的行数和列数
                    int row = table.getRowCount();
                    int column = table.getColumnCount();

                    //遍历行和列
                    for (int i = 0; i < row; i++) {
                        for (int j = 0; j < column; j++) {
                            //获取表格单元格中的文本内容
                            String text = table.getText(i, j);

                            //将获取的文本写入Excel工作表
                            sheet.get(i + 1, j + 1).setValue(text);
                        }
                    }
                    sheetNumber++;
                }
            }
        }

        //将工作簿保存为Excel文件
        workbook.saveToFile("E:/xxx-已加密.xlsx");

    }
}
相关推荐
FG.4 分钟前
Day22
java·面试
菜鸟的迷茫6 分钟前
Redis 缓存雪崩、穿透、击穿面试题深度解析与 Spring Boot 实战代码示例
java
珹洺16 分钟前
C++算法竞赛篇:DevC++ 如何进行debug调试
java·c++·算法
SHUIPING_YANG24 分钟前
根据用户id自动切换表查询
java·服务器·数据库
爱吃烤鸡翅的酸菜鱼36 分钟前
IDEA高效开发:Database Navigator插件安装与核心使用指南
java·开发语言·数据库·编辑器·intellij-idea·database
惊涛骇浪、42 分钟前
SpringMVC + Tomcat10
java·tomcat·springmvc
墨染点香1 小时前
LeetCode Hot100【6. Z 字形变换】
java·算法·leetcode
ldj20201 小时前
SpringBoot为什么使用new RuntimeException() 来获取调用栈?
java·spring boot·后端
超龄超能程序猿1 小时前
Spring 应用中 Swagger 2.0 迁移 OpenAPI 3.0 详解:配置、注解与实践
java·spring boot·后端·spring·spring cloud
风象南2 小时前
SpringBoot配置属性热更新的轻量级实现
java·spring boot·后端