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

    }
}
相关推荐
JavaGuide18 小时前
OPPO 后端校招面试,过于简单了!
java·后端
码割机18 小时前
Linux服务器安装jdk和maven详解
java·linux·maven
青木川崎19 小时前
linux面试题
java·linux·运维
浮游本尊19 小时前
Java学习第28天 - 大规模系统设计与性能优化
java
上下翻飞的屁19 小时前
jdbcTemplate执行sql后数据库字段没有更新问题解决
java·数据库·sql
爱宇阳19 小时前
Java Spring Boot 项目 Docker 容器化部署教程
java·spring boot·docker
Luo_xguan19 小时前
一、Netty-高并发IO底层原理(5种主要的IO模型)
java·服务器·netty·nio
ACGkaka_20 小时前
SpringBoot 实战(四十)集成 Statemachine
java·spring boot·后端
开开心心就好20 小时前
电脑音质提升:杜比全景声安装详细教程
java·开发语言·前端·数据库·电脑·ruby·1024程序员节