首页 > 解决方案 > Openpyxl:如何解决 .iter_cols 不支持的操作数错误

问题描述

我在从两个不同的工作表中检索特定行中多列的单元格值时遇到问题。我正在尝试遍历两个工作表的第一列,其中包含无序的键值。一旦我遍历所有键值并在两个工作表中找到匹配值的单元格位置,我调用我的 def column_name 函数来遍历该特定键值的列范围(行单元格作为参数传递到我的函数;由uniqueID表示)。[m1 and worksh1] 和 [m2 and worksh2] 代表工作簿中的工作表。如果有人可以帮助我解决以下错误,我将不胜感激。此错误出现在我的 column_name 函数的第一行。 for col_cells in workbk1.iter_cols(min_row=uniqueID,max_row=uniqueID,min_col=start,max_col=last):

错误: > 文件 C:...\Python39\site-packages...openpyxl\worksheet\worksheet.py,第 516 行,在 _cells_by_col 中,用于范围内的行(min_row,max_row+1)。类型错误:+ 不支持的操作数类型:'Cell' 和 'int'

 
def column_name(workbk1, workbk2, uniqueID):
 for col_cells in workbk1.iter_cols(min_row=uniqueID,max_row=uniqueID,min_col=start,max_col=last):
       for cell in col_cells:
            for col_cells2 in workbk2.iter_cols(min_row=uniqueID,max_row=uniqueID,min_col=start2,max_col=last2):
                 for cell2 in col_cells2:
                    [execute code]


标签: pythonexcelpandasopenpyxl

解决方案


column_name函数中,最后一个参数uniqueID是传递给min_rowand的参数max_row。这意味着unqiueID应该是一个整数。但是在调用函数时,它被调用为column_name(m1,m2,cell)我们将实际cell对象作为uniqueID.

后来在 openpyxl 尝试时max_row+1,它失败并出现以下错误,因为max_row实际上是Cell

TypeError: unsupported operand type(s) for +: 'Cell' and 'int'

推荐阅读