[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多文件批量搜索(带图形界面)(已更新)...相关推荐

  1. 一张图学会python-一张图 python

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 翻译:丁雪校对:黄念格式:吴怡雯今天由我们的可视化专栏,用一张图介绍py ...

  2. 一张图学会python-一张图学会python

    一张图学会摄影(共9篇)一张图读懂摄影全是套路 论如何从零开始学摄影全是套路 论如何从零开始学摄影相信很多想要玩摄影的朋友,总会遇见各种问题,比如相机怎么选,镜头怎么配,快门是什么之类的,看似很杂乱, ...

  3. python一张图-一张图学会python

    一张图学会摄影(共9篇)一张图读懂摄影全是套路 论如何从零开始学摄影全是套路 论如何从零开始学摄影相信很多想要玩摄影的朋友,总会遇见各种问题,比如相机怎么选,镜头怎么配,快门是什么之类的,看似很杂乱, ...

  4. 一张图了解python_一张图学会python

    提到一张图,大多数人都知道,有人问一张图学会python,当然了,还有人问python 将多个列表合并成一个,这到底是咋回事?其实python删除列表元素呢,接下来小编为大家分享一张图学会python ...

  5. 一张图学会Python

    一张图学会Python 国外一名大神设计的,国内一名大牛翻译的.

  6. python汽车类型识别源代码带图形界面,基于PyTorach深度学习

    python汽车类型识别源代码带图形界面,基于torch深度学习,目前可识别公交车, 货车,客运车, 面包车, 皮卡车, 小轿车,程序包中已含模型文件 完整代码下载地址:python汽车类型识别源代码 ...

  7. 一张图学会python 3_一张图学会Python?想啥呢?!

    网上有这样一张图片,信息量很大,通常会被配上标题"一张图带你学会Python" 这张图流传甚广,但我没有找到明确的出处,图片上附带了 UliPad 的作者 Limodou 的信息, ...

  8. 一张图学会python高清图-一张图带你学会Python,学习Python的非常简单,附教程

    原标题:一张图带你学会Python,学习Python的非常简单,附教程 网上有这样一张图片,信息量很大,通常会被配上标题"一张图让你学会Python" 这张图流传甚广,但我没有找到 ...

  9. 一张图学会python-一张图让你学会Python

    Python是一个非常适合初学者入门的编程语言.相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易.自带的各种模块加上丰富的第三方模块,免去了很多"重复造轮子"的工作,可 ...

最新文章

  1. SEO内部链接优化的技巧
  2. GCD or LCM ---- 处理gcd和lcm同时出现的情况 1499D - The Number of Pairs
  3. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第6章-操作度优化条件下的移动机械臂协同搬运控制
  4. 使用flex 做关键词、正则表达式过滤
  5. Error: Could not find or load main class CLASS的解决方法
  6. 1025:保留12位小数的浮点数
  7. spring-boot ffmpeg 搭建一个音频转码服务
  8. mysql中sql语句有if_Sql中的if函数学习
  9. 民用建筑工程给水排水设计深度图样_市政给水管道工程施工方案
  10. Photoshop隐藏的4个彩蛋
  11. 深入浅出数据分析(一)——MySQL+EXCEL+R统计问卷调查
  12. python 小说分析_Python文章相关性分析---金庸武侠小说分析-2018.1.16
  13. 金仓数据库KingbaseES服务启动失败原因
  14. php中x22是什么意思,我想问一下:联想s22e和x22区别哪款好用点??真实反馈一下!!...
  15. 机器学习中,正态分布为何如此重要?
  16. 中亦安图递交注册:拟募资6亿 年营收近12亿
  17. eclipse 关闭英文拼写检查,关闭xml验证
  18. 华为linux笔记本i3和i7的区别,华为MateBook 13 i3版性能如何 华为MateBook 13 i3版笔记本上手体验...
  19. 电子表格的使用技巧!!实用啊!!!
  20. java 判断ftp文件是否存在_java如何检验ftp服务器中指定文件是否存在

热门文章

  1. Linux基础——Linux 基本指令 ls 和 cd
  2. 一篇文章快速搞懂十大排序算法(C++实现源码)
  3. tensorflow图像数据处理
  4. java byte to integer_Java中的Byte转为无符号的Integer
  5. springboot显示信息并且修改_Spring Boot小结-03--增.删.改.查
  6. (继续搬)struts日期格式的转换以及hibernate中session的关闭在xml中的配置
  7. 查看mysql所有命令
  8. codeforces 792CDivide by Three(两种方法:模拟、动态规划
  9. 飞舞的蝴蝶(GraphicsView框架)
  10. hdu 6015 Gameia(树上博弈)