python 3.6.4
xlrd 1.1.0
批量查询目录下所有Excel文件是否包含指定内容,并输出所有包含指定内容的文件名路径
import os
import xlrd
# 存放匹配到的目标文件路径
result = []
# 遍历目录下的所有文件
def file(file_dir):
# os.walk()函数能够获取所有文件及目录名称
# root:本级根目录名称
# dirs:本级目录下子目录名称
# files:本级目录下的文件名称
for root, dirs, files in os.walk(file_dir):
print('A:',root)
print('B:',dirs)
print("C:",files)
# 遍历本级目录下的所有文件
for x in files:
# 匹配文件名称是否包含 .xls 字符(判断是否为xls或xlsx格式文件)
if ('.xls' in x):
# 剔除文件名包含'$'字符的文件
if('$' in x):
print("这文件不需要查询!!==", x)
else:
# 开启查询函数
# 当前根目录与当前文件名需要加'\'合成实际文件路径
search_xlsx(root+'\\'+x)
print('查询完毕!!!')
# xls、xlsx查询函数
def search_xlsx(file):
# 打开工作表
book = xlrd.open_workbook(file)
# 遍历所有工作簿名称
sheetname = book.sheet_names()
# 搜索每个工作簿是否有目标字符
for z in sheetname:
# 打开工作簿,按工作簿名称打开
table = book.sheet_by_name(z)
# 获取工作簿总行数
nrows = table.nrows
# 获取工作簿总列数
ncols = table.ncols
# 遍历每个单元格
for i in range(nrows):
for j in range(ncols):
# 获取单元格内容
value = table.cell(i,j).value
# 需要匹配搜索的内容(注意Excel有文本格式与数字格式的区别
# 例如 123 与 '123' 在excle表里都显示为123)
if value == '9031704021000431':
print ('就是这个表', file)
result.append(file)
if __name__ == '__main__':
# 需要查询的目标文件目录名称
file('E:\\工作汇总\\工作文件\\批次号')
print("目标文件路径为:", result)