PDF转Excel
文章目录
前言
突然来的任务,时间紧,PDF内容为表格,有水印
一、PDF转Excel
提示:我比较笨,所以分了两步完成,第一步转为Excel,第二步再去掉换行符
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 5 12:19:21 2021
@author: v
"""
from openpyxl import load_workbook
import camelot.io as camelot
import os
import cv2
import xlwt
import pdfplumber
- 尝试Camelot,在anaconda中直接pip install camelot,得到无序csv/xlsx表格
- 安装pdfplumber库,anaconda中pip install pdfplumber这个地方忘记了,但这个库即使安装成功也会报错如下,自己的解决方法是,将路径改为同一路径,pip uninstall pdfplumber 后重新安装,重启Spyder后不报错,很邪乎
AttributeError: module 'pdfminer' has no attribute 'pdftypes'
下方为导入,就直接改的大佬的代码,好用
# 定义保存Excel的位置
workbook = xlwt.Workbook() #定义workbook
sheet = workbook.add_sheet('Sheet1') #添加sheet
i = 0 # Excel起始位置
path = "a.PDF" # 导入PDF路径
pdf = pdfplumber.open(path)
for page in pdf.pages:
# 获取当前页面的全部文本信息,包括表格中的文字
for table in page.extract_tables():
for row in table:
for j in range(len(row)):
sheet.write(i, j, row[j])
i += 1
print('一页完成')
pdf.close()
workbook.save('PDFresult_ee.xls')
二、去掉Excel的换行符
这里是我做的无用功,理由是上面的workbook.save只能保存xls的老式Excel,但openpyxl又只能识别xlsx,报错多次后,我决定手动改成xlsx再重新搞个py文件,不怕麻烦
这里也是直接套用大佬代码,美滋滋
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 5 16:16:45 2021
@author: v
"""
from openpyxl import load_workbook
import camelot.io as camelot
import os
import cv2
import xlwt
import pdfplumber
# 定义保存Excel的位置
from openpyxl import load_workbook
file = "PDFresult_ee.xlsx" #要处理的文件路径
wb = load_workbook(file) #加载文件
ws = wb.active
for i in range(1,ws.max_row+1):
for j in range(1,ws.max_column+1):
old = ws.cell(i, j).value
if old is not None:
ws.cell(i, j).value = old.strip().replace('', '').replace("\n", "")
wb.save(file)
wb.close()
不完善的地方
- 用了两个py文件,很明显可以只用一个,但很懒
- 在PDF换页的时候, 有些地方需要手动改
- pdfplumber安装的时候稀里糊涂,下次碰到报错估计还是瞎蒙