PySimpleGUI界面读取PDF转换Excel

PySimpleGUI 是一个用于创建图形用户界面的 Python 库,而 PDF 文件和 Excel 文件是两种不同的数据格式。要将 PDF 文件转换为 Excel 文件,你需要使用额外的库,如 pdf2excel

下面是一个示例流程,展示了如何使用 PySimpleGUI 创建一个界面,以便用户选择 PDF 文件并读取其中的数据,然后将其导入 Excel 文件:

  1. 安装所需的库

 

bash复制代码

pip install PySimpleGUI pdf2excel openpyxl
  1. 使用 PySimpleGUI 创建界面

 

python复制代码

import PySimpleGUI as sg
# 定义列和行布局
layout = [[sg.Column([[sg.Text("选择 PDF 文件:")], [sg.In(key='-IN-')]], pad=(0,0))],
[sg.Text("选择输出 Excel 文件:")],
[sg.In(key='-OUT-')],
[sg.Column([[sg.Text("开始转换")], [sg.FileBrowse(file_types=(("PDF files", "*.pdf"), ("All files", "*.*")))]])]
# 创建窗口布局
window = sg.Window("PDF to Excel Converter", layout, margins=(0,0), finalize=True)
# 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == "-IN-":
input_file = values['-IN-']
elif event == "-OUT-":
output_file = values['-OUT-']
elif event == "FileSelected":
# 使用 pdf2excel 进行转换
pdf2excel(input_file, output_file)
sg.popup_error("转换完成!")
  1. 使用 pdf2excel 进行转换:请注意,pdf2excel 是一个独立的库,它负责实际的 PDF 到 Excel 的转换。你可能需要自己编写这部分逻辑,或者找到一个合适的库。如果 pdf2excel 不满足你的需求,你可能需要查找其他库或工具来完成这个任务。

  2. 保存 Excel 文件:在上述代码中,我们使用了 openpyxl 来保存 Excel 文件。你可以使用以下代码作为参考:

 

python复制代码

from openpyxl import Workbook
from openpyxl.utils import get_column_letter
def save_to_excel(data, filename):
wb = Workbook()
ws = wb.active
for r in data:
ws.append(r)
wb.save(filename)

在完整的程序中,你需要根据实际的 PDF 文件内容和格式来调整这个函数,使其能够正确地将数据保存到 Excel 文件中。
5. 处理异常和错误:在实际应用中,你应该添加异常处理逻辑,以便在转换过程中出现错误时给出清晰的错误消息。这可能涉及到捕获 pdf2excel 库可能抛出的任何异常。
6. 关闭窗口:在程序结束时,确保关闭 PySimpleGUI 窗口。你可以在 sg.Window 的 close 方法中添加适当的逻辑来处理这一点。
7. 测试和调试:在实际部署之前,确保对程序进行彻底的测试和调试,以确保其按预期工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Compose | UI组件(十一) | Spacer - 留白

文章目录 前言Spacer组件的参数说明Spacer组件的使用 总结 前言 Spacer组件是让两组件之间留有空白间隔 Spacer组件的参数说明 Spacer只有一个修饰符,修饰留空白的大小和比例,颜色 Spacer(modifier: Modifier)Spacer组件的使用 Row {Box(modifier M…

Ruby安装演示教程

当涉及到 Ruby 的安装过程时,一种常见的方法是通过 RVM(Ruby Version Manager)来进行安装和管理。以下是在 Linux 系统上使用 RVM 安装 Ruby 的步骤演示教程: 1、安装 RVM: # 在终端中执行以下命令来下载并安装 RVM…

【React教程】(2) React之JSX入门与列表渲染、条件渲染详细代码示例

目录 JSX环境配置基本语法规则在 JSX 中嵌入 JavaScript 表达式在 JavaScript 表达式中嵌入 JSXJSX 中的节点属性声明子节点JSX 自动阻止注入攻击在 JSX 中使用注释JSX 原理列表循环DOM Elements 列表渲染语法高亮 条件渲染示例1:示例2:示例3&#xff08…

Learn to Earn,Move星航计划第三期诚邀您探索编程和区块链的乐趣

*以下文章来源于MoveFuns ,作者MoveFuns DAO 星航计划是一个 Web3 技术的公益计划,旨在引导更多的人加入开源社区,学习Move语言,了解Web3。本期星航计划由 MoveFuns Dao 发起,由Sui官方基金会支持,汇集了 Web3开发领域内的专业导…

FullStack之Django(1)开发环境配置

FullStack之Django(1)开发环境配置 author: Once Day date:2022年2月11日/2024年1月27日 漫漫长路,才刚刚开始… 全系列文档请查看专栏: FullStack开发_Once_day的博客-CSDN博客Django开发_Once_day的博客-CSDN博客 具体参考文档: The web framewor…

键盘记录器Python代码

键盘记录器完整代码 from pynput.keyboard import Key, Listener import logging logging.basicConfig(filename("keylog.txt"), levellogging.DEBUG, format" %(asctime)s - %(message)s") def on_press(key):logging.info(str(key)) with Listener(on_p…

mysql 正则表达式用法(一)

记录下关于mysql中regexp 正则匹配字符串的相关用法 一、匹配字符类 [:alnum:]  任意字母和数字(同[a-zA-Z0-9]) [:alpha:]  任意字符(同[a-zA-Z]) [:blank:]  空格和制表(同[\t]) [:cntrl:]  ASCII控制字符(ASCII 0到31和127) [:digit:]  任意数字(同[0-9]) [:graph:] …

Leetcode 203 移除链表元素

Leetcode 203 移除链表元素 准备工作1)ListNode基本结构2)初始化ListNode集合 解法一:遍历判定解法二:递归判定 Leetcode 203 移除链表元素 准备工作 1)ListNode基本结构 public class ListNode {public int val;pu…

图灵之旅--ArrayList顺序表LinkedList链表栈Stack队列Queue

目录 线性表顺序表ArrayList简介ArrayList使用ArrayList的构造ArrayList常见操作ArrayList的遍历ArrayList的扩容机制利用ArrayList洗牌ArrayList的优缺点 链表链表的实现双向链表的实现 LinkedListLinkedList引入LinkedList的使用LinkedList的构造LinkedList的常用方法介绍Lin…

pytorch nearest upsample整数型tensor

在用 torch.nn.Upsample 给分割 label 上采样时报错:RuntimeError: "upsample_nearest2d_out_frame" not implemented for Long。 参考 [1-3],用 [3] 给出的实现。稍微扩展一下,支持 h、w 用不同的 scale factor,并测试…

ArcGIS Pro如何新建字段

无论是地图制作还是数据分析,字段的操作是必不可少的,在某些时候现有的字段不能满足需求还需要新建字段,这里为大家讲解一下在ArcGIS Pro中怎么新建字段,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的水…

pytorch安装教程(Anaconda + GPU)

可以去nvidia官网更新驱动 获取下载pytorch的命令地址:Start Locally | PyTorch 在这里可以找到旧版本的cuda的命令:Previous PyTorch Versions | PyTorch 如果使用conda没有安装成功的话,就使用pip:

ToF传感器在移动机器人中的作用

原创 | 文 BFT机器人 在日新月异的机器人技术领域,技术的无缝整合正引领着人类与机器交互方式的革新潮流。ToF传感器作为变革性创新的一个例子,对移动机器人更好地感知周围环境起到了决定性的作用。 ToF传感器与激光雷达技术在创建深度图方面有着异曲同…

大模型视觉理解能力更进一步,谷歌提出全新像素级对齐模型PixelLLM

论文题目:Pixel Aligned Language Models 论文链接:https://arxiv.org/abs/2312.09237 项目主页:Pixel Aligned Language Models 近一段时间以来,大型语言模型(LLM)在计算机视觉领域中也取得了巨大的成功&a…

Unity 观察者模式(实例详解)

文章目录 简介示例1 - 简单的文本更新通知示例2 - 多观察者监听游戏分数变化示例3 - 事件系统实现观察者模式示例4 - 泛型观察者和可序列化的事件系统示例5 - 使用C#委托简化版 简介 在Unity中实现观察者模式,我们可以创建一个Subject(目标/主题&#x…

前端面试题-js部分-数组去重-数组扁平化-伪数组转数组-面向对象的继承方式(ES5)

前端面试题-js部分-数组去重-数组扁平化-伪数组转数组-面向对象的继承方式ES5 数组去重数组扁平化伪数组转换为数组面向对象的继承方式(ES5) 数组去重 1.利用es6 set 去重 Set 类型不允许有值重复 let arr1 [1, 2, 4, 3, 5, 7, 1, 8, 2, 4, 9]console.…

WebRTC系列-自定义媒体数据加密

文章目录 1. 对外加密接口2. 对外加密实现前面的文章都有提过WebRTC使用的加密方式是SRTP这个库提供的,这个三方库这里就不做介绍,主要是对rtp包进行加密;自然的其调用也是WebRTC的rtp相关模块;同时在WebRTC里也提供一个自定义加密的接口,本文将围绕这个接口做介绍及分析;…

【郑益慧】模拟电子技术:7.Mos管的工作原理

Mos管的工作原理 Mos管的出现,几乎不怎么耗电。因此在集成电路中起了非常大的作用 在某些方面确实比晶体三极管强。 基本原理:依靠电场效应来控制。 电场效应几乎是没有电流的,没有电流几乎是没有功率的。 从控制上来说,消耗…

华为——NGFW Module安装在集群交换机上,二层双机负载分担部署,交换机重定向引流

NGFW Module安装在集群交换机上,二层双机负载分担部署,交换机重定向引流 业务需求 如图1所示,两台交换机集群组网,两块NGFW Module分别安装在两台交换机的1号槽位组成双机负载分担组网。NGFW Module工作在二层,也就是…

微信小程序canvas画布实现文字自由缩放、移动功能

目录 实现效果 一、获取画布信息并绘制背景 二、绘制文字 三、绘制文字编辑按钮