Python读取pdf表格写入excel的方法

  • Post category:Python

下面将为您详细讲解“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文件中。