表格常见于 pdf 发票和财务报告中。您可能会遇到需要将 pdf 表格数据导出到 excel 中的情况,以便您可以使用 ms excel 提供的工具对数据进行分析。本文介绍了如何使用 spire.office for java 从 pdf 页面中提取表格并将其导出为单独的 excel 工作表。
安装 spire.office for java
该场景实际上是使用 spire.pdf for java 从 pdf 中提取表格,并使用 spire.xls for java 生成 excel 文件。为了在同一个项目中使用它们,您需要将 spire.office.jar 文件添加为 java 程序中的依赖项。
可以从此链接下载 jar 文件。如果您使用 maven,您可以通过将以下代码添加到项目的 pom.xml 文件中轻松地在应用程序中导入 jar 文件。
com.e-iceblue
e-iceblue
https://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.office
4.12.2
将表格数据从 pdf 导出到 excel
以下是从某页面提取所有表格并将每个表格保存为 excel 文档中的单独工作表的主要步骤。
- 在初始化 pdfdocument 对象时加载示例 pdf 文档。
- 创建一个 pdftableextractor 对象,并在其下调用 extacttable(int pageindex) 方法提取第一页中的所有表格。
- 创建一个 workbook 实例。
- 循环遍历 pdftable[] 数组中的表,并通过其索引获取特定的表。
- 使用 workbook.getworksheets.add() 方法将工作表添加到工作簿。
- 循环遍历 pdf 表格中的单元格,并使用 pdftable.gettext(int rowindex, int columnindex) 方法获取特定单元格的值。然后使用 worksheet.get(int row, int column).settext(string string) 方法将值插入工作表。
- 使用 workbook.savetofile() 方法将工作簿保存为 excel 文档。
- java
import com.spire.pdf.pdfdocument;
import com.spire.pdf.utilities.pdftable;
import com.spire.pdf.utilities.pdftableextractor;
import com.spire.xls.excelversion;
import com.spire.xls.workbook;
import com.spire.xls.worksheet;
public class extracttabledataandsaveinexcel {
public static void main(string[] args) {
//加载示例pdf文档
pdfdocument pdf = new pdfdocument("c:\\users\\administrator\\desktop\\tables.pdf");
//创建一个pdftableextractor实例
pdftableextractor extractor = new pdftableextractor(pdf);
//从第一页提取表格
pdftable[] pdftables = extractor.extracttable(0);
//创建一个工作簿对象
workbook wb = new workbook();
//删除默认工作表
wb.getworksheets().clear();
//如果找到任何表格
if (pdftables != null && pdftables.length > 0) {
//循环遍历表格
for (int tablenum = 0; tablenum < pdftables.length; tablenum ) {
//将工作表添加到工作簿
string sheetname = string.format("table - %d", tablenum 1);
worksheet sheet = wb.getworksheets().add(sheetname);
//循环遍历当前表格中的行
for (int rownum = 0; rownum < pdftables[tablenum].getrowcount(); rownum ) {
//循环遍历当前表格中的列
for (int colnum = 0; colnum < pdftables[tablenum].getcolumncount(); colnum ) {
//从当前表格单元格中提取数据
string text = pdftables[tablenum].gettext(rownum, colnum);
//将数据插入特定单元格
sheet.get(rownum 1, colnum 1).settext(text);
}
}
//自动调整列宽
for (int sheetcolnum = 0; sheetcolnum < sheet.getcolumns().length; sheetcolnum ) {
sheet.autofitcolumn(sheetcolnum 1);
}
}
}
//将工作簿保存为 excel 文件
wb.savetofile("output/exporttabletoexcel.xlsx", excelversion.version2016);
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。 获取有效期 30 天的临时许可证。