利用python将PDF转为Excel并去掉换行符

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
  1. 尝试Camelot,在anaconda中直接pip install camelot,得到无序csv/xlsx表格
  2. 安装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安装的时候稀里糊涂,下次碰到报错估计还是瞎蒙
    原文作者:HappyCharlotte
    原文地址: https://blog.csdn.net/HappyCharlotte/article/details/121170890
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞