使用Java 读取PDF表格数据并保存到TXT或Excel

目录

导入相关Java库

Java读取PDF表格数据并保存到TXT

Java读取PDF表格数据并保存到Excel


在日常工作中,我们经常需要处理来自各种来源的数据。其中,PDF 文件是常见的数据来源之一。这类文件通常包含丰富的信息,其中可能包含重要的表格数据。如何快速高效地提取这些表格数据并保存到常用的文件格式, 已成为一个常见的需求。本文将探讨如何通过Java编程方式实现读取PDF表格数据并保存到TXT和Excel

  • Java读取PDF表格数据并保存到TXT
  • Java读取PDF表格数据并保存到Excel

导入相关Java库

要在Java应用程序中读取PDF表格数据并保存到TXT和Excel,首先要选择合适的库。Spire.PDF for Java库提供了PDF解析功能,Spire.XLS for Java库提供了生成Excel文件的功能。在编写代码前,确保你的Java开发环境中已经导入了这两个库。

Spire.PDF for Java依赖:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>10.4.9</version>
    </dependency>
</dependencies>

Spire.XLS for Java依赖:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>14.5.1</version>
    </dependency>
</dependencies>

Java读取PDF表格数据并保存到TXT

从PDF文档中读取表格数据,主要用到Spire.PDF中的两个方法:PdfTableExtractor.extractTable(pageIndex)PdfTable.getText(rowIndex, columnIndex)。前者用于检索并提取PDF页面上的表格,后者用于获取表格单元格中的数据。

主要步骤如下:

  • 创建 PdfDocument 类的对象,然后使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
  • 创建 StringBuilder类的对象,用于存储提取的表格数据。
  • 创建PdfTableExtractor 类的对象。
  • 循环遍历 PDF 页面,使用PdfTableExtractor.extractTable()方法获取页面中的表格。
  • 循环遍历获取的表格。
  • 获取表格的行数和列数,然后通过 PdfTable.getText() 方法获取表格单元格中的文本并将其添加到StringBuilder。
  • 将StringBuilder的内容写入 txt 文件。

完整代码:

import com.spire.pdf.PdfDocument;
import com.spire.pdf.utilities.PdfTable;
import com.spire.pdf.utilities.PdfTableExtractor;

import java.io.FileWriter;
import java.io.IOException;

public class ExtractTableDataToTxt {
    public static void main(String[] args) throws IOException {
        //实例化PdfDocument类的对象
        PdfDocument pdf = new PdfDocument();
        //加载PDF文档
        pdf.loadFromFile("表格1.pdf");

        //创建StringBuilder类的实例
        StringBuilder builder = new StringBuilder();

        //创建PdfTableExtractor类的对象
        PdfTableExtractor extractor = new PdfTableExtractor(pdf);

        //遍历PDF每一页
        for (int page = 0; page < pdf.getPages().getCount(); page++)
        {
            //提取页面中的表格存入PdfTable[]数组
            PdfTable[] tableLists = extractor.extractTable(page);
            if (tableLists != null && tableLists.length > 0)
            {
                //遍历表格
                for (PdfTable table : tableLists)
                {
                    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);

                            //将获取的文本写入StringBuilder容器
                            builder.append(text + " ");
                        }
                        builder.append("\r\n");
                    }
                    builder.append("\r\n");
                }
            }
        }

        //将StringBuilder的内容写入txt文档
        FileWriter fileWriter = new FileWriter("表格.txt");
        fileWriter.write(builder.toString());
        fileWriter.flush();
        fileWriter.close();
    }
}

Java读取PDF表格数据

Java读取PDF表格数据并保存到Excel

获取PDF表格单元格中的数据后,可以使用Spire.XLS提供的Worksheet.get(rowIndex, columnIndex).setValue()方法将它们逐一写入到Excel表格的单元格中,然后使用Worbook.saveToFile(fileName, fileFormat)方法将结果保存为Excel文件。

主要步骤如下:

  • 创建 PdfDocument 类的对象,然后使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
  • 创建Workbook类的对象,然后使用Workbook.getWorksheets().clear()方法清除默认的工作表。
  • 创建PdfTableExtractor 类的对象。
  • 循环遍历 PDF 页面,使用PdfTableExtractor.extractTable(pageIndex)方法获取页面中的表格。
  • 循环遍历获取的表格。
  • 使用Workbook.getWorksheets().add()方法向Workbook对象添加一个工作表。
  • 获取表格的行数和列数,然后通过 PdfTable.getText() 方法获取表格单元格中的文本。
  • 使用Worksheet.get(rowIndex, columnIndex).setValue()方法将获取的文本写入工作表的单元格。
  • 使用Worbook.saveToFile(fileName, fileFormat)方法将结果Workbook保存为Excel文件。

完整代码:

import com.spire.pdf.PdfDocument;
import com.spire.pdf.utilities.PdfTable;
import com.spire.pdf.utilities.PdfTableExtractor;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ExtractTableDataToExcel {
    public static void main(String[] args) {
        //实例化PdfDocument类的对象
        PdfDocument doc = new PdfDocument();
        //加载PDF文档
        doc.loadFromFile("表格1.pdf");

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

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

        int sheetNumber = 1;

        //遍历PDF页面
        for (int pageIndex = 0; pageIndex < doc.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("提取PDF表格数据到Excel.xlsx", FileFormat.Version2013);
    }
}

Java获取PDF表格数据并保存到Excel

本文介绍了如何使用Java获取PDF表格数据并保存到TXT和Excel文件。你可以根据实际场景将获取的数据写入到其他文件格式,如CSV,Word表格等。如需了解Spire.PDF for Java和Spire.XLS for Java的更多功能,请自行查看Spire.PDF for Java文档Spire.XLS for Java文档

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值