У меня есть следующий рабочий код для поиска ключевого слова в файлах Excel и печати его местоположения:
import openpyxl as xl
import os
import xlrd
file_extensions = ('.xlsx', '.xlsm', '.xls')
keyword = 'EUROBUS'
directory = 'M:\\moje makra'
def filenames(directory):
for root, dirs, filenames in os.walk(directory):
for filename in filenames:
if filename.endswith(file_extensions):
yield os.path.join(root, filename)
for filename in filenames(directory):
if filename.endswith(file_extensions):
try:
wb = xl.load_workbook(filename)
print('Opened ' + filename)
for sheet in wb.worksheets:
rows = sheet.max_row
columns = sheet.max_column
for row in range(1,rows + 1):
for column in range(1,columns + 1):
if keyword in str(sheet.cell(row=row, column=column).value):
print('FOUND IN ' + filename)
else:
print("NOT FOUND")
except:
print('Failed to open ' + filename)
Однако модуль openpyxl не поддерживает формат .xls, поэтому мне нужно переписать скрипт, чтобы использовать вместо него xlrd.
Я попробовал следующее:
for filename in filenames(directory):
if filename.endswith(file_extensions):
try:
wb = xlrd.open_workbook(filename)
print('Opened ' + filename)
for sheet in wb.sheets():
rows = sheet.nrows
columns = sheet.ncols
for row in range(1,rows + 1):
for column in range(1,column +1):
if keyword in str(sheet.cell(row, column).value):
print('FOUND IN ' + filename)
else:
print("NOT FOUND")
except:
print('Failed to open ' + filename)
Но тогда код не может открыть рабочие книги («Открыт ...», а затем «Сбой ...» для каждого файла печатается).
Я также пытался изменить if keyword
строку на str(sheet.cell_value(row,column))
, но безрезультатно.
Как мне это исправить?