我当前正在编写一段代码,该代码循环遍历电子表格的行和列,然后使用函数参数中行r
和列c
处的单元格值。我目前的工作方式如下:
for i in range (1, ws.max_row+1):
first_column = worksheet.cell(i,1).value
second_column = worksheet.cell(i,2).value
third_column = worksheet.cell(i,3).value
result = functionX.create(first_column, second_column, third_column)
索引i
在工作表中的行中循环。我正在使用worksheet.cell(row,column).value
库中的openpyxl
函数,并将它们存储在x_column
变量中。稍后,这些变量将在class.create()
函数的同一for循环中用作参数。
但是,我想做的是也使用单独的索引来跟踪循环中的列。原因是当用户在行i
和列j
遇到一个空单元格时,我想向用户打印一条消息。
作为一种解决方案,我认为使用嵌套的for循环来跟踪列可能会很有用:
for i in range (1, ws.max_row+1):
for j in range (1,4):
first_column = worksheet.cell(i,j).value
second_column = worksheet.cell(i,j).value
third_column = worksheet.cell(i,j).value
result = functionX.create(first_column, second_column, third_column)
但是,这显然不会在第二个循环的相同迭代中增加索引j
。知道如何解决这个问题吗?
答案 0 :(得分:2)
如果您真的想对列使用for循环,则可以使用列表对单元格的值进行分类,然后解压缩该列表以将分类后的值传递给方法.create()
。
如果您想添加更多列而不更改大量代码,而只是增加第二个循环的范围,则这也很灵活。
它看起来像这样:
for i in range (1, ws.max_row+1):
column_list = []
for j in range (1, 4):
column_list.append(worksheet.cell(i,j).value)
# the '*' unpacks the whole list
result = the_class.create(*column_list)
对您有用吗?