python 批量查询目录下所有Excel文件是否包含指定内容

​​​​​​​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)

你可能感兴趣的:(python,excel,开发语言)