Python实现PDF—>Excel的自动批量转换(附完整代码)

Python实现PDF—>Excel的自动批量转换(附完整代码)

话不多说,先看效果!

需要转换的PDF:
在这里插入图片描述

转换后的Excel:
在这里插入图片描述

01、底层原理

PDF 到 Excel 的转换涉及不同文件格式之间的数据提取和重构。底层原理可以简单概括为以下几个步骤:

  1. PDF 文本提取: 首先,使用 Python 中的库(例如 PyPDF2、pdfplumber 或 PyMuPDF)来提取 PDF 文档中的文本内容。PDF 中的文本可以是可选的,有时可能是图像或矢量图形。

  2. 文本处理和解析: 提取的文本可能包含大量无关紧要的信息。在这一步,需要对文本进行处理和解析,以获取有用的信息。这可能涉及到正则表达式、文本分析或其他处理技术,具体取决于 PDF 的结构和内容。

  3. 数据结构化: 将提取的文本数据结构化为表格或类似的数据结构。这通常涉及到将文本转换为适当的数据类型(例如字符串、数字等)并组织成表格形式。

  4. Excel 创建和写入: 使用 Python 中的 pandas 或 openpyxl 等库,将结构化的数据写入 Excel 文件。这涉及到创建 Excel 工作簿、工作表,并将提取的数据逐行或逐列写入。

  5. 格式调整: 对生成的 Excel 文件进行格式调整,以确保数据的呈现方式符合期望。这可能包括设置列宽、行高,应用样式,或者执行其他格式化操作。

  6. 保存文件: 最后,保存生成的 Excel 文件。这可以通过库中提供的保存功能完成,确保生成的文件保存在指定的路径。

需要注意的是!!!

PDF 到 Excel 的转换过程可能会受到 PDF 文档的复杂性和结构的影响。一些 PDF 文件可能包含图像或表格,这可能需要额外的处理步骤,例如图像识别表格提取技术。因此,实际的转换过程可能需要根据具体的 PDF 文件结构进行调整。

02、代码实现

import os
import pdf2docx
import docx
from openpyxl import Workbook
from tkinter import Tk, filedialog

def convert_pdf_to_excel(pdf_path, excel_path):
    # 将PDF文件转换为Word文件
    docx_path = 'temp.docx'
    pdf2docx.parse(pdf_path, docx_path)

    # 打开Word文件
    doc = docx.Document(docx_path)

    # 创建Excel文件
    wb = Workbook()
    ws = wb.active

    # 遍历Word文档中的所有表格
    for table in doc.tables:
        # 复制表格到Excel中
        for row in table.rows:
            ws.append([cell.text for cell in row.cells])

    # 保存Excel文件
    wb.save(excel_path)

def convert_folder_to_excel(folder_path):
    # 获取文件夹中的所有文件
    files = os.listdir(folder_path)

    # 遍历文件夹中的所有文件
    for file in files:
        # 判断文件是否为PDF文件
        if file.lower().endswith('.pdf'):
            # 构造PDF文件的路径
            pdf_path = os.path.join(folder_path, file)

            # 构造Excel文件的路径
            excel_path = os.path.splitext(pdf_path)[0] + '.xlsx'

            # 调用函数将PDF文件转换为Excel文件
            convert_pdf_to_excel(pdf_path, excel_path)

# 创建Tkinter根窗口
root = Tk()
root.withdraw()

# 使用文件夹选择对话框选择文件夹
folder_path = filedialog.askdirectory()

# 调用函数将选择的文件夹中的所有PDF文件转换为Excel格式
convert_folder_to_excel(folder_path)

运行效果如下:

在这里插入图片描述

​ 运行上述代码后,弹出运行框,访问本地路径,选择指定文件夹(包含你要转换的PDF文件),并修改代码中的保存路径,即可将选择文件夹下的PDF文件全部转换为Excel文件,效果如本文开头所示!本次文件夹选择框使用tkinter库实现。

tkinter 是 Python 中用于创建图形用户界面 (GUI) 的标准库之一。它提供了一组用于创建窗口、按钮、文本框等 GUI 元素的工具,使开发者能够轻松构建用户友好的应用程序。以下是对 tkinter 的介绍以及与其他同类型库比较的优劣性:

03、tkinter 的特点:

  1. 内置库: tkinter 是 Python 的标准库之一,无需额外安装。它在大多数 Python 安装中都是默认包含的,因此开发者可以方便地使用而不用担心兼容性或依赖性问题。
  2. 跨平台性: tkinter 提供了对不同操作系统的支持,包括 Windows、Linux 和 macOS。这意味着开发者可以使用相同的代码在不同平台上运行他们的 GUI 应用程序。
  3. 简单易用: tkinter 的设计目标之一是简单易用。它的 API 相对来说较为直观,适合初学者入门。同时,对于一些简单的 GUI 应用,tkinter 提供了足够的功能。

与其他库的比较:

  1. PyQt/PySide:
    • 优势: PyQt 和 PySide 是另外两个流行的 GUI 库,它们提供了更丰富和灵活的功能。它们支持现代的 UI 设计,具有更好的外观和交互效果。
    • 劣势: 相对于 tkinterPyQt 和 PySide 的学习曲线可能更陡峭。此外,它们需要额外的安装步骤,不像 tkinter 那样内置于 Python。
  2. Kivy:
    • 优势: Kivy 是一个专注于移动应用和多点触控的 GUI 库。它支持多种平台,包括 Windows、Linux、macOS 和 Android。
    • 劣势: 相比于 tkinter,Kivy 的文档和社区支持相对较少。它的主要重点是移动应用,可能不适合所有类型的 GUI 应用。
  3. wxPython:
    • 优势: wxPython 提供了一个类似于 tkinter 的简单 API,但也支持更复杂的 GUI 需求。它的外观和感觉可以通过主题进行定制。
    • 劣势:tkinter 相比,wxPython 的文档可能相对较少。而且,与 tkinter 一样,它也需要额外的安装步骤。
总结:
  • tkinter 适用于简单的 GUI 应用,对于入门级开发者和小型项目而言是一个良好的选择。
  • PyQt、PySide、Kivy 和 wxPython 适用于需要更丰富功能、更现代外观或跨平台移动应用的项目,但可能需要更多学习和配置。
    选择 GUI 库的最佳方法取决于项目的需求、开发者的经验水平以及对不同库的个人偏好。

最近更新

  1. TCP协议是安全的吗?

    2024-01-11 00:18:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-11 00:18:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-11 00:18:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-11 00:18:04       20 阅读

热门阅读

  1. 毕业论文idea

    2024-01-11 00:18:04       31 阅读
  2. 调整Hive查询临时内存大小的方法

    2024-01-11 00:18:04       34 阅读
  3. 搭建大数据开发环境【AutoDL容器】

    2024-01-11 00:18:04       38 阅读
  4. Django模版过滤器Markdown

    2024-01-11 00:18:04       37 阅读
  5. Hadoop之mapreduce参数大全-1

    2024-01-11 00:18:04       30 阅读
  6. 在React和Vue中实现锚点定位功能

    2024-01-11 00:18:04       34 阅读
  7. linux socket网络编程基础知识

    2024-01-11 00:18:04       32 阅读
  8. Spring05

    Spring05

    2024-01-11 00:18:04      24 阅读
  9. C++ 智能指针

    2024-01-11 00:18:04       29 阅读
  10. spring-boot-admin-server-ui 打包备忘

    2024-01-11 00:18:04       28 阅读
  11. MySQL 系统表

    2024-01-11 00:18:04       35 阅读