在使用 openpyxl 时,如何根据我在 Excel 工作表中迭代的行号创建动态变量?

How do I create a dynamic variable based on the row number I am iterating over in an Excel sheet while using openpyxl?

提问人:ak40837 提问时间:7/2/2020 最后编辑:ak40837 更新时间:7/2/2020 访问量:1131

问:

我正在尝试遍历 Excel 工作表中的所有行,并根据当前正在迭代的单元格设置一个变量。以下是我正在使用的代码:

import openpyxl
from openpyxl import load_workbook

wb = openpyxl.load_workbook('workbook.xlsx', data_only=True)
queue = wb['Queue']
max_row = queue.max_row

for i in queue.iter_rows(min_row=2, max_row=max_row):
    dynamic_cell = queue.cell(row=i, column=10).value
    if dynamic_cell  == 'ice cream':
        # perform some operation

最初,我以为这篇文章在“按行迭代”部分下,有我正在寻找的答案:https://medium.com/aubergine-solutions/working-with-excel-sheets-in-python-using-openpyxl-4f9fd32de87f

但是,当我到达输入时:

dynamic_cell = queue.cell(row=i, column=10).value

我的输出是:

TypeError: '<' not supported between instances of 'tuple' and 'int'

我不确定如何解释这一点或尝试其他解决方案。任何关于如何制作工作的反馈将不胜感激!(:dynamic_cell

更新:从我收集到的信息来看,最有效的解决方案可能是根据 in 中的行数创建一个整数列表(参见:如何通过 while 循环动态创建变量?但是,我目前没有必要的经验来完成这项工作。我将继续寻找解决方案,同时定期查看这篇文章。max_row

python excel for-loop openpyxl 变量

评论

0赞 Charlie Clark 7/2/2020
如果您使用的是 iter_rows,则不需要 cell()。如果你看一下,你会发现它是一个单元格的元组,而不是一个计数器。i

答:

0赞 ak40837 7/2/2020 #1

根据 @Charlie Clark 的观察,解决方案:

import openpyxl
from openpyxl import load_workbook

wb = openpyxl.load_workbook('workbook.xlsx', data_only=True)
queue = wb['Queue']
max_row = queue.max_row

for i in queue.iter_rows(min_row=2, max_row=max_row):
    dynamic_cell = i[9]
    if dynamic_cell  == 'ice cream':
        # perform some operation