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

    }
}
相关推荐
她的男孩1 小时前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
荣码3 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
plainGeekDev4 小时前
Gson → kotlinx.serialization
android·java·kotlin
小bo波13 小时前
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践
java·课程设计·gui·游戏开发·扫雷·swing
咖啡八杯14 小时前
GoF设计模式——备忘录模式
java·后端·spring·设计模式
SamDeepThinking1 天前
裁掉那个差程序员后,给你看团队里高手的代码:这个习惯,希望你有
java·后端·程序员
朕瞧着你甚好1 天前
技术雷达 & Java 集成评估报告 — Apache Tika 3.3.1
java·ai编程
MacroZheng1 天前
短短几天,暴涨2.8万Star!又一款编程神器开源!
java·人工智能·后端