0

I am trying to iterate over all the rows in an Excel worksheet and set a variable based on the cell that is currently being iterated over. Below is the code that I am using:

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

Initially, I thought that this article, under the section "Iterating by rows", had the answer I was looking for: https://medium.com/aubergine-solutions/working-with-excel-sheets-in-python-using-openpyxl-4f9fd32de87f

However, when I arrive at the input:

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

My output is:

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

I'm unsure of how to interpret this or what other solutions to try. Any feedback on how to make dynamic_cell work would be greatly appreciated! (:

UPDATE: From what I've been able to gather, the most effective solution may be to create a list of integers based on the number of rows in max_row(see: How can you dynamically create variables via a while loop?). However, I don't have the necessary experience to accomplish this at the moment. I'll continue my search for a solution while periodically checking this post.

ak40837
  • 13
  • 1
  • 6
  • If you're using iter_rows, there is no need for cell(). If you look at `i` you'll see that it is a tuple of cells and not a counter. – Charlie Clark Jul 02 '20 at 09:03

1 Answers1

0

The solution, per @Charlie Clark's observation:

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
ak40837
  • 13
  • 1
  • 6