目录
导入相关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表格数据并保存到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表格数据并保存到TXT和Excel文件。你可以根据实际场景将获取的数据写入到其他文件格式,如CSV,Word表格等。如需了解Spire.PDF for Java和Spire.XLS for Java的更多功能,请自行查看Spire.PDF for Java文档和Spire.XLS for Java文档。