[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', "未选择任何文件!\n")

root.update()

print("未选择任何文件!\n")

else:

textbox.insert('end', "已选择文件\n")

for i in filename:

files.append(i)

print("\t\t%s\n"%(i))

textbox.insert('end', "%s\n"%(i))

textbox.see(tkinter.END)

root.update()

return 0

def start():

searchText=e.get() #从钩子获取内容

if len(files)==0:

print("未上传文件")

textbox.insert('end', "错误:未上传文件\n")

root.update()

return 0

if (not searchText) or searchText=="请输入需要搜索的字符串":

print("未输入需查询内容")

textbox.insert('end', "错误:未输入需查询内容\n")

root.update()

return 0

print("正在执行")

textbox.insert('end', "正在执行,页面可能稍有卡顿,请耐心等待\n")

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', "没有找到该字符串\n")

else:

textbox.insert('end', "执行结束,执行结果如下:\n")

for i in result:

textbox.insert('end', "%s\n"%(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", "日志消息:\n")

root.mainloop() #执行

python 获取excel文本框_简单使用python做excel多文件批量搜索(带图形界面)(已更新)...相关推荐

  1. python 获取excel文本框_如何基于python操作excel并获取内容

    这篇文章主要介绍了如何基于python操作excel并获取内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景:从excel表中获取请求url. ...

  2. python获取系统时间函数_简单记录python的时间函数操作

    1. time和datetime模块 import datetime,time 2. 获得当前时间 time.time() #获得当前时间,返回float型 time.localtime([float ...

  3. python获取网页文本框内容_python识别html主要文本框

    在抓取网页的时候只想抓取主要的文本框,例如 csdn 中的主要文本框为下图红色框: 抓取的思想是,利用 bs4 查找所有的 div,用正则筛选出每个 div 里面的中文,找到中文字数最多的 div 就 ...

  4. python图片显示文本框_用PYTHON以“形式”同时显示图像和文本框

    我是PYTHON新手.我试图用PYTHON以"表单"同时显示图像和文本框.在 我的问题是:图像在屏幕上不可见.如何解决这个问题?在 谢谢 我的代码:import tkinter a ...

  5. python编写接口自动化脚本_简单的python http接口自动化脚本

    摘抄:今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值 ...

  6. python函数分几种_简单了解Python中的几种函数

    python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda lambda函数的使用方法:在lam ...

  7. python 获取json中最大值_详细解析 Python 爬取 bilibili 的视频、弹幕以及封面

    本文使用 Zhihu On VSCode 创作并发布 环境 用到的 Python 库: Python 3.7 requests moviepy json re os 浏览器:Firefox/ 83.0 ...

  8. python人脸识别系统下载_简单的Python人脸识别系统

    案例一 导入图片 思路: 1.导入库 2.加载图片 3.创建窗口 4.显示图片 5.暂停窗口 6.关闭窗口 # 1.导入库 import cv2 # 2.加载图片 img = cv2.imread(' ...

  9. [转载] python中的且语句_简单探讨python中的语句和语法

    参考链接: 在Python中解包:并行分配之外 python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了, ...

最新文章

  1. 版本服务器Svn部署与配置
  2. 秒杀多线程第十篇 生产者消费者问题 (续)
  3. 微信开发修改button里的字体大小_微信小程序全栈开发课程【视频版】2.2 index页面完善...
  4. 白话地图投影之初识地球
  5. 平台(洛谷P1105题题解,Java语言描述)
  6. php手机短信验证码用cookie存好还是session存好,保存登录信息的时候用session好还是cookie好?...
  7. 在java中班级的表示方法_Java基础班学习笔记(8)
  8. window和linux下Redis 安装和使用
  9. 在VS中使用独立的项目(Project)开发DNN模块
  10. 在linux环境下编译运行OpenCV程序的两种方法 - woshijpfgg
  11. 华为认证hcnp题库多久更新一次?华为hcnp认证值不值得考?
  12. 服务器硬盘 二手,分析:二手服务器配件 哪个最不该买?
  13. Confluence 空间附件(Attachments )宏
  14. 5.9拉普拉斯矩阵的谱分解,谱图卷积,图卷积演变过程
  15. 隐藏计算机关机键,关机快捷键有哪些?电脑Windows快捷关机最全方法图文详解
  16. 【ESP32-IDF】02-2 外设-触摸传感器
  17. 用html代码在word中插入分页符,Word文档中插入分页符并对分页方式进行设置的方法...
  18. python足球联赛赛程_足球联赛赛程表工作表
  19. yarn安装插件报错: An unexpected error occurred: “https://registry.npmjs.org/vue-router: connect ETIMEDOUT
  20. Charles ios无法下载证书- chls.pro/ssl一直加载治标办法

热门文章

  1. Webpack打包构建太慢了?试试几个方法
  2. MySQL常见的库操作,表操作,数据操作集锦及一些注意事项
  3. .net、mono和C#
  4. HDU 3785 寻找大富翁
  5. app与后台交互之间的几种安全认证机制
  6. 世界你好! 个人网站搭建过程
  7. RMAN异机恢复遭遇ORA-01547、ORA-01152、ORA-01110错误案例
  8. 创建sdcard.img时,提示permission dennid
  9. 怎么去掉网页上复制到word的文章中各种符号例如向下箭头(↓)?
  10. (转)EF三种编程方式详细图文教程(C#+EF)之Database First