如何使用Openpyxl在多个工作簿中搜索字符串

时间:2018-01-25 00:46:03

标签: excel python-3.x openpyxl

我想在单元格中搜索某些单词的工作簿目录,并让Python返回包含这些单词的工作簿名称。到目前为止,我已经能够遍历每个工作簿,使用下面的代码打印每个工作簿名称和工作表名称,但我不知道循环每个单元格并搜索字符串的正确语法。

import os
from openpyxl import load_workbook

path = r"T:\DHFCS SSC\17.0 ILS\Jacob WIP\Cable schedules\Cable schedules"
sheets = os.listdir(path)
sheets = [_ for _ in sheets if not _.startswith('~')]

for sheet in sheets:
    print(sheet)
    wb2 = load_workbook(os.path.join(path, sheet))
    print(wb2.get_sheet_names())
    ##wb2._archive.close()

我需要添加什么来搜索所有电子表格中的单词并打印包含它的电子表格名称?

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,我都知道如何做到这一点。该文件将提示用户输入Excel文件的目录,然后询问搜索词,然后返回包含该词的电子表格的名称。

import os
from openpyxl import load_workbook

path = input("Paste the directory to search (right click on icon in top left > edit > paste: ")
string = input("Enter the search term in lower case: ")
print('Searching...')
workbooks = os.listdir(path)
workbooks = [_ for _ in workbooks if not _.startswith('~')]

for workbook in workbooks:
    wb2 = load_workbook(os.path.join(path, workbook))
    for sheet_name in (wb2.get_sheet_names()):
        sheet = wb2.get_sheet_by_name(sheet_name)
        for value in sheet.values:
            if string in " ".join([str(_).lower() for _ in value if _ ]):
                print(workbook)