openpyxl遍历特定的列

时间:2018-07-14 03:51:20

标签: python openpyxl

for row_cells in sheet.iter_rows(min_col=1, max_col=8):
    for cell in row_cells:
        print('%s: cell.value=%s' % (cell, cell.value))

上面的代码段返回从第1列到第8列的所有列。我只需要这两列中的值。 是否可以只获得第1列和第8列?我还不能弄清楚。

2 个答案:

答案 0 :(得分:1)

您没有义务拥有内循环:

for row_cells in sheet.iter_rows(min_col=1, max_col=8):
    print('%s: cell.value=%s' % (row_cells[0], row_cells[0].value))
    print('%s: cell.value=%s' % (row_cells[-1], row_cells[-1].value))

更好的方法可能是将迭代器仅压缩在这两列上:

for c1, c8 in zip(sheet.iter_rows(min_col=1, max_col=1), sheet.iter_rows(min_col=8, max_col=8)):
    print('%s: cell.value=%s' % (c1, c1.value))
    print('%s: cell.value=%s' % (c8, c8.value))

答案 1 :(得分:0)

有两种方法:

for row in range(2,worksheet.max_row+1):  
for column in [column_3_name, column_8_name]:
    cell_name = "{}{}".format(column, row)
    process(worksheet[cell_name].value)  # Process it

请注意,这会占用大量内存,因此需要为每个单元分配内存。看到: https://openpyxl.readthedocs.io/en/2.5/tutorial.html(尤其是第一个警告)。

我会选择做您当前正在做的事情:

for row_cells in sheet.iter_rows(min_col=1, max_col=8):
for cell in row_cells:
    # Check for column name here.