一张图学会python应用到excel-简单使用python做excel多文件批量搜索(带图形界面)(已更新)...
[Python] 纯文本查看 复制代码import xlwings as xw #引入xlwings处理excel
from tkinter import * #引入tkinter处理界面
import tkinter.filedialog #调用上传文件窗口类
import math
import threading #多线程
import string
#导入下面的库
import pythoncom
#基本变量
files=[]
result=[]
def search(file,word):
pythoncom.CoInitialize()#函数开头初始化,否则会出现' 尚未调用coinitialize'错误
app = xw.App(visible=False,add_book=False) #初始化 visible=False表示不在用户界面打开该excel add_book=False只打开不新建工作薄
wb = app.books.open(file) #打开已有excel文件
sheets = wb.sheets #读取工作簿
for sht in sheets:
rng = sht.range('a1').expand('table')
nrows = rng.rows.count #获取行数
ncols = rng.columns.count #获取列数
print("正在比对:%s"%(file))
#文本转字符
A=math.floor(ncols/26) #首字母
A=chr((A-1)+97) if (A-1)>=0 else "" #如26以内首字母为空 27首字母为A 55首字母为B
B=math.floor(ncols%26) #第二个字母 取26的余 按这个算法 B为第2列 Z为第26列 AA 为第27列 AB为第28列 BA为第53列
B=chr(B+97) if B>=0 else ""
col=("%s%s"%(A,B)) #合并
val=sht.range('a1:%s%d'%(col,nrows)).value #获取区域内容
for ii,i in enumerate(val): #遍历区域内容
for jj,j in enumerate(i):
if str(j).find(str(word))!=-1: #搜索该字符串
mess="成功找到数据位于表:%s 工作簿:%s 行:%d 列:%d 内容:%s"%(file,sht,ii+1,jj+1,j)
result.append(mess)
print(mess)
wb.close()#不加的话,Excel一直处于使用状态,无法打开Excel文件查看
app.quit() #退出excel
def MyThreading(num1,num2,searchText): #线程执行
for i in range(num1,num2):
print("打开文件%s"%(files[i]))
search(files[i],searchText)
return 0
def FileSelect():#文件选择
files.clear()
filename = tkinter.filedialog.askopenfilenames() #弹出多文件选择窗
if(len(filename)==0):
textbox.insert('end', "未选择任何文件! ")
root.update()
print("未选择任何文件! ")
else:
textbox.insert('end', "已选择文件 ")
for i in filename:
files.append(i)
print(" %s "%(i))
textbox.insert('end', "%s "%(i))
textbox.see(tkinter.END)
root.update()
return 0
def start():
searchText=e.get() #从钩子获取内容
if len(files)==0:
print("未上传文件")
textbox.insert('end', "错误:未上传文件 ")
root.update()
return 0
if (not searchText) or searchText=="请输入需要搜索的字符串":
print("未输入需查询内容")
textbox.insert('end', "错误:未输入需查询内容 ")
root.update()
return 0
print("正在执行")
textbox.insert('end', "正在执行,页面可能稍有卡顿,请耐心等待 ")
root.update()
ThreadLen=10 if len(files)>10 else 1 #文件数量若小于10则只开一个线程
ThreadArr=[]
if ThreadLen>1:
for i in range(ThreadLen):#追加十个线程(若需要)
bei=math.floor(len(files)/ThreadLen)
print("执行线程%d至%d"%((i*bei),(i*bei+bei)))
t=threading.Thread(target=MyThreading,args=((i*bei),(i*bei+bei),searchText))
ThreadArr.append(t)
#追加线程执行剩余文件搜索
print("执行线程%d至%d"%(0,len(files)))
t=threading.Thread(target=MyThreading,args=(0,len(files),searchText))
ThreadArr.append(t)
for i in ThreadArr:
i.start() #循环执行所有线程
for i in ThreadArr:
i.join() #循环等待所有线程执行结束
print("执行结束")
if len(result)==0:
textbox.insert('end', "没有找到该字符串 ")
else:
textbox.insert('end', "执行结束,执行结果如下: ")
for i in result:
textbox.insert('end', "%s "%(i))
result.clear()
textbox.see(tkinter.END) #查看文本框底部
root.update() #更新文本框
#构建用户界面
root=Tk()
root.title("excel内容搜索") #窗口标题
root.geometry('450x300+585+265') #初始化窗口大小和位置
root.resizable(0, 0) #设置窗口大小不可更改
#输入框
e = StringVar()#字符串钩子
enrty=Entry(root,width=20,textvariable=e).grid(row=0,column=0,columnspan=2,padx=40,pady=5)
e.set("请输入需要搜索的字符串")
#上传文件按钮
getFile = Button(root,text="点击选择文件",command= FileSelect).grid(row=1,column=0,columnspan=2,padx=40,pady=5)
#开始按钮
startBtn = Button(root,text="START",command= start).grid(row=2,column=0,columnspan=2,padx=40,pady=5)
#消息框
textbox = Text(root,width=50,height=10)
textbox.grid(row=3,column=0,columnspan=2,padx=40,pady=5)
textbox.insert("end", "日志消息: ")
root.mainloop() #执行
一张图学会python应用到excel-简单使用python做excel多文件批量搜索(带图形界面)(已更新)...相关推荐
- 一张图学会python-一张图 python
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 翻译:丁雪校对:黄念格式:吴怡雯今天由我们的可视化专栏,用一张图介绍py ...
- 一张图学会python-一张图学会python
一张图学会摄影(共9篇)一张图读懂摄影全是套路 论如何从零开始学摄影全是套路 论如何从零开始学摄影相信很多想要玩摄影的朋友,总会遇见各种问题,比如相机怎么选,镜头怎么配,快门是什么之类的,看似很杂乱, ...
- python一张图-一张图学会python
一张图学会摄影(共9篇)一张图读懂摄影全是套路 论如何从零开始学摄影全是套路 论如何从零开始学摄影相信很多想要玩摄影的朋友,总会遇见各种问题,比如相机怎么选,镜头怎么配,快门是什么之类的,看似很杂乱, ...
- 一张图了解python_一张图学会python
提到一张图,大多数人都知道,有人问一张图学会python,当然了,还有人问python 将多个列表合并成一个,这到底是咋回事?其实python删除列表元素呢,接下来小编为大家分享一张图学会python ...
- 一张图学会Python
一张图学会Python 国外一名大神设计的,国内一名大牛翻译的.
- python汽车类型识别源代码带图形界面,基于PyTorach深度学习
python汽车类型识别源代码带图形界面,基于torch深度学习,目前可识别公交车, 货车,客运车, 面包车, 皮卡车, 小轿车,程序包中已含模型文件 完整代码下载地址:python汽车类型识别源代码 ...
- 一张图学会python 3_一张图学会Python?想啥呢?!
网上有这样一张图片,信息量很大,通常会被配上标题"一张图带你学会Python" 这张图流传甚广,但我没有找到明确的出处,图片上附带了 UliPad 的作者 Limodou 的信息, ...
- 一张图学会python高清图-一张图带你学会Python,学习Python的非常简单,附教程
原标题:一张图带你学会Python,学习Python的非常简单,附教程 网上有这样一张图片,信息量很大,通常会被配上标题"一张图让你学会Python" 这张图流传甚广,但我没有找到 ...
- 一张图学会python-一张图让你学会Python
Python是一个非常适合初学者入门的编程语言.相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易.自带的各种模块加上丰富的第三方模块,免去了很多"重复造轮子"的工作,可 ...
最新文章
- SEO内部链接优化的技巧
- GCD or LCM ---- 处理gcd和lcm同时出现的情况 1499D - The Number of Pairs
- 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第6章-操作度优化条件下的移动机械臂协同搬运控制
- 使用flex 做关键词、正则表达式过滤
- Error: Could not find or load main class CLASS的解决方法
- 1025:保留12位小数的浮点数
- spring-boot ffmpeg 搭建一个音频转码服务
- mysql中sql语句有if_Sql中的if函数学习
- 民用建筑工程给水排水设计深度图样_市政给水管道工程施工方案
- Photoshop隐藏的4个彩蛋
- 深入浅出数据分析(一)——MySQL+EXCEL+R统计问卷调查
- python 小说分析_Python文章相关性分析---金庸武侠小说分析-2018.1.16
- 金仓数据库KingbaseES服务启动失败原因
- php中x22是什么意思,我想问一下:联想s22e和x22区别哪款好用点??真实反馈一下!!...
- 机器学习中,正态分布为何如此重要?
- 中亦安图递交注册:拟募资6亿 年营收近12亿
- eclipse 关闭英文拼写检查,关闭xml验证
- 华为linux笔记本i3和i7的区别,华为MateBook 13 i3版性能如何 华为MateBook 13 i3版笔记本上手体验...
- 电子表格的使用技巧!!实用啊!!!
- java 判断ftp文件是否存在_java如何检验ftp服务器中指定文件是否存在
热门文章
- Linux基础——Linux 基本指令 ls 和 cd
- 一篇文章快速搞懂十大排序算法(C++实现源码)
- tensorflow图像数据处理
- java byte to integer_Java中的Byte转为无符号的Integer
- springboot显示信息并且修改_Spring Boot小结-03--增.删.改.查
- (继续搬)struts日期格式的转换以及hibernate中session的关闭在xml中的配置
- 查看mysql所有命令
- codeforces 792CDivide by Three(两种方法:模拟、动态规划
- 飞舞的蝴蝶(GraphicsView框架)
- hdu 6015 Gameia(树上博弈)