当前位置: 首页 > news >正文

基于python编写的excel表格数据标记的exe文件

目录

一、需求:

二、思路:

三、工具

四、设计过程

(一)根据需要导入相关的图形界面库

(二)创建图形窗口

(三)标签设计

(四)方法按钮设计

(五)输入框的设置

(六)创建文本框输出组件

(七)清除输出文本框内容方法

(八)初始化所需数据

(九)数据标记

(十)清除标记

五、转化为exe格式

六、结果


在编写该exe文件的时候,首先需要知道需要那些工具以及思路和需求,这样才能更好的解决整体设计以及调整方案。

一、需求:

1. 选择excel表格文件进行指定字符所在行进行标记

2. 需要指定列的指定字符

3. 指定的excel子表格Sheet名称

4. 标记完成后清除标记(防止上一次的标记未清除影响下一次的判断)

5. 标记内容输入到文本窗口(方便查看标记的内容,不用打开excel表格)

6. 清除文本框的内容,有利于查看内容

二、思路:

1. 首先设计GUI窗口和文本框

2. 设计相应的需求按钮

3. 相应标签与输入框的设计

4. 利用虚拟环境将GUI转化成exe格式

三、工具

整个过程的设计需要python的多种库与转化成exe格式的方法工具,涉及到的如下:

import tkinter
import os     
import xlrd  # 导入读取excel表格的xlrd库
import pandas as pd
from openpyxl import load_workbook          # 导入表格
from openpyxl.styles import PatternFill     # 用于标记
from tkinter import filedialog, dialog       #打开文件pyinstaller   #打包成exe文件的库

四、设计过程

(一)根据需要导入相关的图形界面库

整个过程我们需要窗口库、读取表格库、导入表格库、标记库、打开文件库

#导入图形窗口界面库
import tkinter
import os
import xlrd  # 导入读取excel表格的xlrd库
import pandas as pd
from openpyxl import load_workbook  # 导入表格
from openpyxl.styles import PatternFill  # 用于标记
from tkinter import filedialog, dialog   #打开文件库

(二)创建图形窗口

在创建图形窗口的过程中需要设计窗口的名字以及长宽,具体的设计如下:

#创建GUI图形窗口
def create_tk():window = tkinter.Tk()                   #创建窗口window.title('数据筛选标记')                    #给图形窗口命名window.geometry('900x400')             #设置图像窗口宽、高return window

这里使用了窗口中的title、geometry方法

(三)标签设计

整个过程中需要输入列、输入筛选字符、输入Sheet名、输入筛选表格路径、被标记内容输出

#标签设置
def set_label(window):tkinter.Label(window, text='输入列').place(width=80, height=25, x=20, y=150)  # “用户”文字标签tkinter.Label(window, text='输入筛选字符').place(width=100, height=25, x=20, y=200)tkinter.Label(window, text='输入sheet名').place(width=80, height=25, x=20, y=250)tkinter.Label(window, text='输入带筛选表格路径').place(width=120, height=25, x=20, y=100)tkinter.Label(window, text='被标记内容输出').place(width=120, height=25, x=550, y=10)

其中使用tkinter库的Label方法,他的使用方法为依次输入窗口名、标签文本、标签长宽、标签位置

(四)方法按钮设计

方法按钮的设计是为了点击按钮执行某个方法,这样能够简化我们的开发过程,其中使用tkinter中Button方法,依次添加窗口名、按钮文本、执行命令、按钮文本的长宽,最后按钮的位置设置

#方法按钮
def method_button(window,entry1,entry2,entry3,entry4,text_widget):sheet_index, row, start_rowx, end_rowx, start_colx = init()button11 = tkinter.Button(window,text='退出',command=lambda :window.destroy(),width=3,height=2)   #相当于使用destroy方法button11.place(x=250,y=320,anchor='nw')      #自由设置按钮位置button12 = tkinter.Button(window,text='打开待筛选表格文件',command=open_file,width=20,height=2)   #button12.place(x=40,y=10,anchor='nw')      #自由设置按钮位置button13 = tkinter.Button(window,text='标记',command= lambda:mark_cells(text_widget,row,entry3.get(),entry2.get(),int(entry1.get()),entry4.get()),width=3,height=2)button13.place(x=50,y=320,anchor='nw')      #自由设置按钮位置button14 = tkinter.Button(window, text='清除标记',command=lambda: clear_mark(entry4.get(),entry3.get()),width=6,height=2)button14.place(x=140, y=320, anchor='nw')  # 自由设置按钮位置button15 = tkinter.Button(window, text='清除',command=lambda: clear_print_text(text_widget),width=3,height=1)button15.place(x=840, y=8, anchor='nw')  # 自由设置按钮位置

(五)输入框的设置

输入框的设置是为了方便整体需求的直接输入,方便操作,使用了tkinter库的Entry输入框方法

#输入框设置
def input_tk(window):entry1 = tkinter.Entry(window,width=20)   #加show='*'属于加密行为entry1.place(x=150,y=150)entry2 = tkinter.Entry(window,width=20)entry2.place(x=150,y=200)entry3 = tkinter.Entry(window,width=20)entry3.place(x=150,y=250)entry4 = tkinter.Entry(window,width=20)entry4.place(x=150,y=100)return entry1 ,entry2,entry3,entry4

这里需要将输入框进行返回,方便后面的使用

(六)创建文本框输出组件

此处为了将标记的内容输出在exe文件中做的设计,方便使用者使用。其中使用tkinter的文本方法Text,依次输入高和宽,以及输出窗口的位置

# 创建一个文本输出框组件
def print_text():text_widget = tkinter.Text(height=25, width=80, yscrollcommand='set')text_widget.place(x=320, y=40)scrollbar_y = tkinter.Scrollbar(command=text_widget.yview, orient='vertical')scrollbar_x = tkinter.Scrollbar(command=text_widget.xview, orient='horizontal')text_widget.configure(yscrollcommand=scrollbar_y.set, xscrollcommand=scrollbar_x.set)scrollbar_y.pack(side='right', fill='y')scrollbar_x.pack(side='bottom', fill='x')return text_widget

此处还使用了文本框滑动条Scrollbar,这样为了解决内容过多时的查看。

(七)清除输出文本框内容方法

#清除文本框内容
def clear_print_text(text_widget):text_widget.delete(1.0, tkinter.END)

将(六)中返回的文本框使用在删除方法中,使用delete方法来解决这个问题。

(八)初始化所需数据

# 初始化所需数据
def init():sheet_index =0  # 指定excel中的子表格row =0  # 初始行start_row =0  # 开始行end_row = None  # 结束行start_col =0  # 开始列return sheet_index ,row ,start_row ,end_row ,start_col

(九)数据标记

def mark_cells(text_widget,row ,sheet, str_type, col, file_path):df = pd.read_excel(file_path, engine='openpyxl')                 #读取表格data_excel = xlrd.open_workbook(file_path)                         # 打开excel表格table = data_excel.sheet_by_name(sheet)                           # 通过索引获取表格中的子表格n_rows = table.nrows                                                # 获取该sheet中的有效行数n_cols = table.ncols                                                # 获取该sheet中的有效列数workbookB = load_workbook(file_path)sheetB = workbookB[sheet]for rowB in sheetB.iter_rows(1, n_rows, col, col):  # 遍历表A每个单元格for cellB in rowB:valueB = str(cellB.value)  # 强制转换为字符串if str_type in valueB:fills = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")row = row + 1for i in range(n_cols):sheetB.cell(row, i + 1).fill = fills# 读取被标记行内容row_contents =df.iloc[row-2].tolist()# 在文本输出框中插入文本text_widget.insert(tkinter.END, '第%s行输出的内容:\n'%(row))text_widget.insert(tkinter.END ,str(row_contents)+'\n')else:row = row + 1workbookB.save(file_path)

使用PatternFill方法进行标记

(十)清除标记

#清除表格标记
def clear_mark(file_path,sheet):workbookB = load_workbook(file_path)sheetB = workbookB[sheet]for row in sheetB.iter_rows():for cell in row:if cell.fill:cell.fill = PatternFill(start_color='FFFFFF', end_color='FFFFFF', fill_type='solid')workbookB.save(file_path)

清除标记则使用PatternFill方法将其中的颜色换成白色即可

五、转化为exe格式

python设计的GUI界面需要转化为exe格式才能更好的方便操作,因此需要使用pyinstaller库则可以操作,方法如下:

pyinstaller -F test.py -w

使用该命令的时候,一定要在对应所需转化的.py文件目录下才可以。比如我的py文件在E:\python程序\数据筛选目录下,因此在dos命中切换到对应的路径再进行使用pyinstaller方法将其转化为exe格式。

但是此种方法将会导致exe格式过大,因此需要采取另外的方法进行解决,我们采用创建windows虚拟环境来解决这个问题。

conda create -n 虚拟环境名字 python==3.8  #根据自己所安装的版本创建虚拟环境
conda activate 虚拟环境名字(我设置为Test_GUI)               #激活虚拟环境
conda deactivate                         #退出虚拟环境

1. 从开始菜单运行“Anaconda Prompt”,出现的界面输入创建虚拟环境的指令。成功创建了一个名字为Test_GUI,且基于python版本3.8的虚拟环境

2. 在创建过程中需要回复(y/n),Yes,再激活虚拟环境

3. 在该虚拟环境下安装所需库,安装方法如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名称

这里将下面的所有库进行安装:

tkinter 
xlrd  # 导入读取excel表格的xlrd库
pandas 
openpyxl          # 导入表格
pyinstaller   #打包成exe文件的库

4. 使用如下方法查看安装所需库是否完全安装好

创建好了之后,在该虚拟环境下切换目录至E:\python程序\数据筛选,输入如下命令:

pyinstaller -F test.py -w

等待运行完毕即可得到exe文件较小的格式

六、结果

打包之后在你的dist中有一个exe文件,打开即可,打开展示结果如下:

相关文章:

基于python编写的excel表格数据标记的exe文件

目录 一、需求: 二、思路: 三、工具 四、设计过程 (一)根据需要导入相关的图形界面库 (二)创建图形窗口 (三)标签设计 (四)方法按钮设计 &#xff0…...

acwing算法基础之基础算法--高精度加法算法

目录 1 知识点2 模板 1 知识点 大整数 大整数,它们的长度都为 1 0 6 10^6 106。大整数是指长度为 1 0 6 10^6 106的整数。 大整数 - 大整数 大整数 * 小整数 大整数 / 小整数 把大整数存储到向量中,需要考虑高位在前还是低位在前,低位在前…...

openGauss学习笔记-84 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署服务器优化:x86

文章目录 openGauss学习笔记-84 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署服务器优化:x8684.1 BIOS84.2 操作系统环境设置84.3 网络 openGauss学习笔记-84 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署服务器优化:x86 …...

二分查找:34. 在排序数组中查找元素的第一个和最后一个位置

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《算法》 文章目录 前言一、题目解析二、解题思路1. 暴力查找2. 一次二分查找 部分遍历3. 两次二分查找分别查找左右端点1.查找区间左端点2. 查找区间右端点 三、代码实现总结 前言 本篇文…...

javaee ssm框架项目整合thymeleaf2.0 更多thymeleaf标签用法 项目结构图

创建ssmthymeleaf项目 创建ssmthymeleaf项目参考此文 thymeleaf更多常用标签 <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><title>Title</title> …...

lv7 嵌入式开发-网络编程开发 11 TCP管理与UDP协议

目录 1 TCP管理 1.1 三次握手 1.2 四次挥手 1.3 保活计时器 2 wireshark安装及实验 3.1 icmp协议抓包演示 3.2 tcp协议抓包演示 3 UDP协议 3.1 UDP 的主要特点&#xff1a; 4 练习 1 TCP管理 1.1 三次握手 TCP 建立连接的过程叫做握手。 采用三报文握手&#xff1…...

overleaf在线编辑工具使用教程

文章目录 1 用 orcid注册overleaf获取模板2 使用模板 1 用 orcid注册overleaf获取模板 通常来说&#xff0c;在期刊投稿网站information for author中找template 。下载压缩包后上传到over leaf中。 加入找不到官方模板&#xff0c;用overleaf中的 2 使用模板 .bib文件&…...

Python基础复习【第一弹】【黑马】

本篇是观看b站黑马视频所做的笔记第一弹&#xff0c;为1-98节。 b站-黑马Python # 1.Hello World print("Hello World")# 2.字面量 在代码中&#xff0c;被写下来固定的值# 3.字符串 print("python")# 4.单行注释 # 多行注释""" "&q…...

【Word】公式编辑器中连字符/减号等显示偏长/过长

问题 当公式编辑器中出现连字符的时候&#xff0c;连字符显示偏长&#xff0c;如下图所示&#xff1a; 方法 在连字符的前后加上双引号后即可解决连字符显示偏长的问题。 最终效果对比如下&#xff1a; 结语 Word的公式编辑器中&#xff0c;双引号内部的内容被当做普通…...

架构设计系列4:如何设计高性能架构

在架构设计系列1&#xff1a;什么是架构设计中&#xff0c;我们讲了架构设计的主要目的&#xff0c;是为了解决软件系统复杂度带来的问题&#xff0c;今天我们来聊聊软件系统复杂度的来源之一高性能。 一、什么是高性能架构&#xff1f; 要搞清楚什么是高性能架构&#xff0c…...

1392. 最长快乐前缀

链接&#xff1a; 1392. 最长快乐前缀 题解&#xff1a; class Solution { public:string longestPrefix(string s) {if (s.size() < 0) {return "";}int MOD 1e9 7;// 构建26的n次方&#xff0c;预处理std::vector<long> pow26(s.size());pow26[0] 1…...

【C++设计模式之备忘录模式:行为型】分析及示例

简介 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于保存和恢复对象的状态。备忘录模式通过将对象的状态封装成一个备忘录&#xff08;Memento&#xff09;&#xff0c;并将备忘录保存在一个管理者&#xff08;Caretaker&#xff…...

数据结构与算法(四):哈希表

参考引用 Hello 算法 Github&#xff1a;hello-algo 1. 哈希表 1.1 哈希表概述 哈希表&#xff08;hash table&#xff09;&#xff0c;又称散列表&#xff0c;其通过建立键 key 与值 value 之间的映射&#xff0c;实现高效的元素查询 具体而言&#xff0c;向哈希表输入一个键…...

FFmpeg 命令:从入门到精通 | ffplay 播放控制选项

FFmpeg 命令&#xff1a;从入门到精通 | ffplay 播放控制选项 FFmpeg 命令&#xff1a;从入门到精通 | ffplay 播放控制选项选项表格图片 FFmpeg 命令&#xff1a;从入门到精通 | ffplay 播放控制选项 选项表格 项目说明Q&#xff0c;Esc退出播放F&#xff0c;鼠标左键双击全…...

代码随想录day59

647. 回文子串 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#…...

【小工具-生成合并文件】使用python实现2个excel文件根据主键合并生成csv文件

1 小工具说明 1.1 功能说明 一般来说&#xff0c;我们会先有一个老的文件&#xff0c;这个文件内容是定制好相关列的表格&#xff0c;作为每天的报告。 当下一天来的时候&#xff0c;需要根据新的报表文件和昨天的报表文件做一个合并&#xff0c;合并的时候就会出现有些事新增…...

【论文阅读】An Evaluation of Concurrency Control with One Thousand Cores

An Evaluation of Concurrency Control with One Thousand Cores Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores ABSTRACT 随着多核处理器的发展&#xff0c;一个芯片可能有几十乃至上百个core。在数百个线程并行运行的情况下&…...

网页版”高德地图“如何设置默认城市?

问题&#xff1a; 每次打开网页版高德地图时默认定位的都是“北京”&#xff0c;想设置起始点为目前本人所在城市&#xff0c;烦恼的是高德地图默认的初始位置是北京。 解决&#xff1a; 目前网页版高德地图暂不支持设置起始点&#xff0c;打开默认都是北京&#xff0c;只能将…...

小谈设计模式(8)—代理模式

小谈设计模式&#xff08;8&#xff09;—代理模式 专栏介绍专栏地址专栏介绍 代理模式代理模式角色分析抽象主题&#xff08;Subject&#xff09;真实主题&#xff08;Real Subject&#xff09;代理&#xff08;Proxy&#xff09; 应用场景远程代理虚拟代理安全代理智能引用代…...

queryWrapper的使用教程

大于、等于、小于 eq 等于 例&#xff1a;queryWrapper.eq("属性","lkm") ——> 属性 lkm ne 不等于 例&#xff1a;queryWrapper.ne("属性","lkm") ——> 属性<> lkm gt 大于 例&#xff1a;queryWrapper.gt("属性…...

数组模拟双链表

文章目录 QuestionIdeasCode Question 实现一个双链表&#xff0c;双链表初始为空&#xff0c;支持 5 种操作&#xff1a; 在最左侧插入一个数&#xff1b; 在最右侧插入一个数&#xff1b; 将第 k 个插入的数删除&#xff1b; 在第 k 个插入的数左侧插入一个数&#xff1b; …...

鸡群优化(CSO)算法(含MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…...

3. 安装lombok maven镜像设置

安装lombok & maven镜像设置 一、maven镜像设置 Maven:负责进行项目管理、依赖工具管理的 软件。 快捷解决方案&#xff1a; 1.方法一 直接配置系统默认的文件 各个人因为登录的用户名不同&#xff0c;所以目录名不同。 2.方法二 自定义本地仓库的位置 完成之后重新打…...

详谈Spring

作者&#xff1a;爱塔居 专栏&#xff1a;JavaEE 目录 一、Spring是什么&#xff1f; 1.1 Spring框架的一些核心特点&#xff1a; 二、IoC&#xff08;控制反转&#xff09;是什么&#xff1f; 2.1 实现手段 2.2 依赖注入&#xff08;DI&#xff09;的实现原理 2.3 优点 三、AO…...

PyTorch入门之【AlexNet】

参考文献&#xff1a;https://www.bilibili.com/video/BV1DP411C7Bw/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 AlexNet 是一个经典的卷积神经网络模型&#xff0c;用于图像分类任务。 目录 大纲dataloadermodeltraintest 大纲 各个文件的作用&…...

(六)正点原子STM32MP135移植——内核移植

目录 一、概述 二、编译官方代码 三、移植 四、编译 一、概述 前面已经移植好了TF-A、optee、u-boot&#xff0c;在u-boot能正常跑起来的情况下&#xff0c;现在来移植内核。 二、编译官方代码 进入kernel目录 2.1 解压源码、打补丁 /* 解压源码 */ tar xf linux-6.1.28.…...

自媒体工作内容管理助手

内容助手 访问地址&#xff1a;editor.yunwow.cn 背景介绍 最近在学习流量运营&#xff0c; 流量运营的第一站是内容创作&#xff0c; 我试过不少原创内容&#xff0c;都是跟生活相关的例如&#xff1a;录一段联琴的视频、录一段秋天的风景、写一段生活感悟、发一段小宠物的生…...

Echarts 教程一

Echarts 教程一 可视化大屏幕适配方案可视化大屏幕布局方案Echart 图表通用配置部分解决方案1. titile2. tooltip3. xAxis / yAxis 常用配置4. legend5. grid6. series7.color Echarts API 使用全局echarts对象echarts实例对象 可视化大屏幕适配方案 rem flexible.js 关于flex…...

【Kubernetes】Kubernetes 对象是什么?

什么是 Kubernetes 对象&#xff1f;常见的 Kubernetes 对象参考&#x1f50e;感谢 &#x1f496; 什么是 Kubernetes 对象&#xff1f; Kubernetes 对象是持久化的实体&#xff0c;用于描述整个集群的状态和配置。它们是在 etcd 等持久化存储中存储的&#xff0c;因此它们的状…...

【C++设计模式之模板模式】分析及示例

C之模板模式 描述实现原理示例步骤1步骤1 分析步骤2步骤2 分析调用输出结果 结论 描述 模板模式&#xff08;Template Pattern&#xff09;是设计模式中的一种行为型模式。 该模式定义一个操作中的算法骨架&#xff0c;而将具体的算法实现延迟到子类中。 模板模式使得子类可以…...

去哪里可以做网站/自动发帖软件

博主以往已经整理过图神经网络用于推荐系统&#xff0c;整理过对比学习用于推荐系统。 图神经网络用于推荐系统问题&#xff08;PinSage&#xff0c;EGES&#xff0c;SR-GNN&#xff09;图神经网络用于推荐系统问题&#xff08;NGCF&#xff0c;LightGCN&#xff09;图神经网络…...

网站栏目设计规划表/新网站秒收录技术

什么是图?图是一种复杂的非线性表结构.由若干给定的点一级任意两点间的连线所构成.图通常用来描述事物之间的特定关系, 代表的就是事物, 线就是事物之间所具有的关系.例如社交网络就是一种典型的图关系, 每一个用户都是一个顶点,任意两个用户加了好友, 他们之间就有了一条边.简…...

高校网站建设策划/今天时政新闻热点是什么

前提&#xff1a;为9月份找工作做基础准备&#xff0c;一下内容均为《数据架构和java几何框架》书中概述。一&#xff1a;java语言的重要特性1&#xff1a;数据抽象原则&#xff1a;用户代码无法访问所使用的类的实现细节&#xff0c;如果A类使用了B类&#xff0c;那么A的方法无…...

微信公众号运营需要做什么/沈阳百度推广优化

opencv中的逻辑运算包含了&#xff1a;按位与、按位或、按位非、按位异或四种逻辑运算 首先 按位与操作&#xff1a; 一般格式&#xff1a;dstcv2.bitwise_and(src1,src2[,mask]) 其中mask&#xff08;也就是掩码&#xff09;的作用如下&#xff1a; 1.提取感兴趣区&#xff1a…...

做微网站需要域名吗/网站关键词优化教程

跨域问题和同源策略同源策略是浏览器的一种安全机制&#xff0c;同源即域名、协议、端口完全相同在同源策略下&#xff0c;只有同源的地址才能相互通过AJAX方式交流同源指的是两个地址之间的关系&#xff0c;不同源的地址之间的请求称做跨域http(协议)://www.baidu.com(域名):8…...

做外贸面料的网站/友链交换网站源码

算法总结之欧拉函数&中国剩余定理 1.欧拉函数 概念&#xff1a;在数论&#xff0c;对正整数n&#xff0c;欧拉函数是少于或等于n的数中与n互质的数的数目。 通式&#xff1a;φ(x)x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) 其中p1, p2……pn为x的所有质因数&#xf…...