Python 如何在openpyxl和xlrd中获得单元格值?

Python 如何在openpyxl和xlrd中获得单元格值?,python,openpyxl,xlrd,Python,Openpyxl,Xlrd,我有以下工作代码,用于在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(direc

我有以下工作代码,用于在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关键字
行更改为
str(sheet.cell_value(行、列))
,但没有效果

如何修复此问题?

更改

            for row in range(1,rows + 1):
                for column in range(1,column +1):


并删除(或缩小)Mel指出的
try
块。

如果删除
try
块,您将得到实际的错误消息,这将有助于调试此功能。这就是为什么在捕获所有异常的
try
块中放入一堆代码通常不是一个好主意。
            for row in range(rows):  # rows + 1 will result in 'out of range'
                for column in range(columns):  # note 'columns'  not 'column'