下面将为您详细讲解“Python读取pdf表格写入excel的方法”的完整实例教程。
一、前置条件
在进行本教程时,需要保证电脑中已经安装好Python和一些必要的库:
- Python3.x
- PyPDF2
- xlwt
可以通过pip安装这些库:
pip install PyPDF2 xlwt
二、实现步骤
1.导入需要用到的库
在Python脚本中,需要导入PyPDF2和xlwt库:
import PyPDF2
import xlwt
2.定义PDF文件路径和Excel文件路径
需要定义PDF文件的路径和Excel文件的路径,这里我将PDF文件保存在/Users/user/Documents/pdf/
目录下,Excel文件保存在/Users/user/Documents/excel/
目录下:
pdf_file_path = "/Users/user/Documents/pdf/test.pdf"
excel_file_path = "/Users/user/Documents/excel/test.xls"
3.打开PDF文件
读取PDF文件前,需要先打开PDF文件:
pdf_file = open(pdf_file_path, 'rb')
4.读取PDF表格
使用PyPDF2库读取PDF文件中的表格,将其存储到二维列表中:
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
pages = pdf_reader.numPages
table = []
for i in range(pages):
page = pdf_reader.getPage(i)
content = page.extractText()
rows = content.split('\n')
new_rows = list(filter(None, rows))
for row in new_rows:
table.append(row.split())
5.创建Excel工作簿并定义工作表
打开Excel文件后,创建一个工作簿,定义工作表的名称:
book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")
6.将读取到的表格数据写入Excel文件中
将读取到的PDF表格数据写入Excel文件的工作表中:
for i in range(len(table)):
for j in range(len(table[i])):
sheet1.write(i, j, table[i][j])
7.保存Excel文件
写入完毕后,保存Excel文件:
book.save(excel_file_path)
三、完整示例
import PyPDF2
import xlwt
pdf_file_path = "/Users/user/Documents/pdf/test.pdf"
excel_file_path = "/Users/user/Documents/excel/test.xls"
pdf_file = open(pdf_file_path, 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
pages = pdf_reader.numPages
table = []
for i in range(pages):
page = pdf_reader.getPage(i)
content = page.extractText()
rows = content.split('\n')
new_rows = list(filter(None, rows))
for row in new_rows:
table.append(row.split())
book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")
for i in range(len(table)):
for j in range(len(table[i])):
sheet1.write(i, j, table[i][j])
book.save(excel_file_path)
在上述代码中,我们先利用PyPDF2库读取了指定PDF文件中的表格,然后将表格数据写入到了一个新的Excel文件中。
这里我们还提供另外一个实例。假设我们现在要处理的PDF文件包含多个表格,我们可以按照以下方式对上面的代码进行修改:
import PyPDF2
import xlwt
pdf_file_path = "/Users/user/Documents/pdf/test.pdf"
excel_file_path = "/Users/user/Documents/excel/test.xls"
pdf_file = open(pdf_file_path, 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
pages = pdf_reader.numPages
book = xlwt.Workbook(encoding="utf-8")
for i in range(pages):
table = []
page = pdf_reader.getPage(i)
content = page.extractText()
rows = content.split('\n')
new_rows = list(filter(None, rows))
for row in new_rows:
table.append(row.split())
sheet_name = "Sheet {}".format(i+1)
sheet = book.add_sheet(sheet_name)
for i in range(len(table)):
for j in range(len(table[i])):
sheet.write(i, j, table[i][j])
book.save(excel_file_path)
在上面的代码中,我们利用循环方式先将PDF文件中每个表格读取出来,然后在循环内构造新的sheet对象并将读取出来的每个表格数据写入到对应的sheet中。最后将所有的sheet保存到一个新的Excel文件中。