Excel文本内容抽取工具[Python]

#创作灵感#

  • 一堆Excel文件,每个打开看太累了。写个脚本直接显示里面的内容多好。
  • 最好这些内容可以直接复制到剪切板,方便以后编辑修改。
  • 只需要将文件拖动到全屏置顶的文本框内,就能弹出Excel里的内容。
  • 支持一次选取多个文件

开干!

一、需要导入并安装这些包:【需要使用tkinter】

pip install windnd
pip install pywin32
pip install openpyxl

二、核心抽取Excel文件的代码:

if file_path[-4:]!='xlsx' and file_path[-3:]!='xls':
      showinfo("error","请选择Excel文件!")
      return ''
# 加载工作簿
workbook = openpyxl.load_workbook(file_path)

sheetnamelist = workbook.sheetnames
extracted_text = ""

# 遍历所有的sheet
for tmp_name in sheetnamelist
    sheet = workbook[tmp_name]
    extracted_text = extracted_text + '\n' + tmp_name + '\n'
    # 遍历工作表的每一行和每一列,提取文本内容
    for row in sheet.iter_rows(values_only=True):
          extracted_text = extracted_text + '\n'
          for cell in row:
               if isinstance(cell, str):
                     extracted_text = extracted_text + cell + ','
return extracted_text

三、使用文件拖放工具,来处理拖放操作:

 windnd.hook_dropfiles(self,func=self.on_drop) #使用windnd组件完成拖放。

四、将Excel文件里的内容弹出为文本框,并自动复制到剪切板

class MyContentDialog(tk.Toplevel):
    def __init__(self, parent, d_btns={}, title='My Content',content=''):
        tk.Toplevel.__init__(self, parent)

        self.parent = parent
        self.name = title
        self.text_area = None
        self.btns = []
        self.text_size = (60, 20)
        self.btn_size = (16, 1)

        self.transient(parent)  # 去掉最大最小化按钮
        self.title(title)

        self.protocol("WM_DELETE_WINDOW", self.cancel)
        if not d_btns:
            d_btns = {'OK': self.cancel}
        self.init_input_box(d_btns,content)


    def cancel(self):
        self.parent.path_text.delete('0.0', 'end')
        self.parent.path_text.insert('insert', '\n将Excel文件拖至本框内:\n')
        self.destroy()
        # self.withdraw()
        # self.parent.grab_set()

    def init_input_box(self, d_btns,content):
        w, h = self.text_size
        # 初始化文本框
        if self.text_area: self.text_area.destroy()
        self.text_area = scrolledtext.ScrolledText(self, width=w, height=h)
        self.text_area.grid(row=0, column=0, columnspan=len(d_btns), padx=10, pady=5)
        self.text_area.focus()
        self.text_area.insert('end',content) # 末尾插入
        # self.text_area.insert('insert', content)  # #光标插入

        w, h = self.btn_size
        for name, cmd in d_btns.items():
            # 初始化按钮
            btn = Button(self, text=name, width=w, height=h)
            btn.grid(row=1, column=i, pady=5)
            btn.configure(command=cmd)
            self.btns.append(btn)


    def bind_btn_cmds(self, btn_cmds):
        for i, btn in enumerate(self.btns):
            btn.configure(command=btn_cmds[i])

    def show(self):

        self.grab_set()
        self.deiconify()
        self.update()

五、窗口全屏置顶:

class ExtractorApp(tk.Tk):

    def __init__(self):
        super().__init__()
        self.title("")
        self.geometry("500x100+600+0")  # 初始大小

        self.lift()
        self.attributes("-topmost", True)
        self.overrideredirect(1)  # 为1时,Windows平台标题栏隐藏。

六、完整代码:

Excel文本内容抽取工具Python资源-CSDN文库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

react17+18 中 setState是同步还是异步更新

在类组件中使用setState,在函数式组件中使用hooks的useState。 setstate目录 1. 类组件1.1 react 17版本1.2 react 18版本 2、函数式组件 1. 类组件 1.1 react 17版本 参考内容:第十一篇:setState 到底是同步的,还是异步的&…

Unity类银河恶魔城学习记录12-8 p130 Skill Tree UI源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI.cs using UnityEngine;public class UI : MonoBehaviour {[SerializeFi…

【精选】发布应用到应用商店的基本介

摘要 本文旨在介绍如何在各大应用商店发布应用,包括市场选择、准备材料、上架步骤以及常见被拒原因及解决方法。通过详细的步骤和经验分享,帮助开发者顺利将应用推向市场。 引言 随着移动应用市场的不断发展,越来越多的开发者希望将他们的…

C++类和对象上

C和C语言本质区别 C语言是面向过程的,面向过程的,分析出求解问题的步骤,然后逐步通过函数调用来逐步解决问题。 C在分析问题是在面对对象的基础上来实现的,即将一件事情拆分为不同的对象,靠的是对象之间的交互来完成的…

OSPF数据报文格式

OSPF协议是跨层封装的协议,跨四层封装,直接将应用层的数据封装在网络层协议后面,IP协议包中协议号字段对应的数值为——89 OSPF的头部信息: ——所有数据包公有的信息 版本:OSPF版本 在IPV4中一般使用OSPFV2&#xf…

c 解数独(通用方法,适用于9×9 数独)

折腾了一周时间,终于搞定99数独通用方法 思路:1.生成每行空位的值,也就是1-9中除去非0的数。 2.用行,列,宫判断每行中每个空位的最小取值范围后再重新生成每行。 3.随机提取生成的9行,判断每列之和是否等…

找不到vcruntime140.dll怎么办,vcruntime140.dll丢失的多种解决方法

在我们日常频繁地与电脑打交道、依赖其处理各种工作、学习乃至娱乐任务的过程中,偶尔会遭遇一些令人困扰的技术问题。其中一种颇为常见的情况便是,当您正全神贯注于某个重要应用的操作,或是满怀期待地试图启动一款新安装的游戏时,…

2万亿训练数据!Stable LM 2-12B加入开源队列

公*众*号:AI疯人院 4月9日,知名大型模型开源平台Stability.ai在其官网上发布了全新的类ChatGPT模型——Stable LM 2 12B。 据了解,Stable LM 2 12B模型拥有120亿个参数,其训练数据涵盖了英语、西班牙语、德语等7种语言的2万亿个…

C++修炼之路之string--标准库中的string

目录 前言 一:标准库的string类简介 1.string是basic_string的一份char类型的类模板 2.basic_string类模板的分类 3.string是表示字符串的字符串类 4.在使用string类时要添加头文件#include 二:string类的常用接口(只介绍常用的) 1.构造析构赋…

今日arXiv最热大模型论文:Dataverse,针对大模型的开源ETL工具,数据清洗不再难!

引言:大数据时代下的ETL挑战 随着大数据时代的到来,数据处理的规模和复杂性不断增加,尤其是在大语言模型(LLMs)的开发中,对海量数据的需求呈指数级增长。这种所谓的“规模化法则”表明,LLM的性…

ETLCloud结合kafka的数据集成

一、ETLCloud中实时数据集成的使用 在ETLCloud中数据集成有两种方式,一种是离线数据集成,另一种便是我们今天所要介绍的实时数据集成了,两者的区别从名字便可以得知,前者处理的数据是离线的没有时效性的,后者的数据是…

常见的解析漏洞总结

文件解析漏洞 文件解析漏洞主要由于网站管理员操作不当或者 Web 服务器自身的漏洞,导致一些特殊文件被 IIS、apache、nginx 或其他 Web服务器在某种情况下解释成脚本文件执行。 比如网站管理员配置不当,导致php2、phtml、ascx等等这些文件也被当成脚本文…

【VScode】同时编辑多处

【VScode】同时编辑多处 1. 多光标自定义批量编辑2. 选择多个,同时操作(批量选中局部匹配项)3. 取消选择4. 在不移动光标的情况下滚动屏幕5. 批量选中全局匹配项6.重点6.1 通过上下键选择多行6.2 同时选中所有行的末尾6.3 选中多列另一种方式6.4 通过正则的方式配置…

显示学习4(基于树莓派Pico) -- 游戏

来自:https://github.com/zelacerda/micropython 代码改造了一下,让它可以跑起来。 简单分析一下代码。外层是一个死循环,有一个状态机来对应不同的场景。 def loop():while True:if state 0: splash_screen()elif state 1: game_waiti…

《数学大世界》期刊点评_栏目设置_投稿指南

《数学大世界》期刊点评_栏目设置_投稿指南 《数学大世界》知网 5000字符3版 收录小中高数学 教研类文章 理论+课题实例 23.1-7月版面; 24年3-4月版面也可安排 主管单位:吉林出版集团股份有限公司 主办单位:北方妇女儿童出版…

Python-VBA函数之旅-bytearray函数

目录 1、bytearray函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:非风V非雨-CSDN博客 bytearray函数在Python中提供了一种可变字节序列的表示方式,这在实际编程中有多种应用场景。常见的应用场…

基于springboot+vue+Mysql的职称评审管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Web 前端性能优化之八:前端性能检测实践

五、前端性能检测实践 1、常用的检测工具 Lighthouse、Chrome开发者工具中与性能检测相关的一些工具面板、页面加载性能分析工具PageSpeed Insights、专业的性能检测工具WEBPAGETEST等 1、Chrome 任务管理器 通过Chrome任务管理器我们可以查看当前Chrome浏览器中&#xff0…

机器学习-08-关联规则和协同过滤

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中关联规则和协同过滤。 参考 机器学习(三):Apriori算法(算法精讲) Apriori 算法 理论 重点 MovieLens:一个常用的电影推荐系统领域的数据集 2…

苍穹外卖---文件上传-阿里OSS

一:开通阿里云对象存储服务oss,创建bucket,获得密钥 二:在程序中集成上传文件功能 1.连接阿里云OSS对象存储服务器 声明一个配置属性的文件用于传入连接的参数 package com.sky.properties;import lombok.Data; import org.springframewo…