Python openpyxl-读取循环中的下一个单元格值

Python openpyxl-读取循环中的下一个单元格值,python,excel,python-2.7,openpyxl,Python,Excel,Python 2.7,Openpyxl,我正在创建一个循环来遍历工作表中的单元格。在某些情况下,我希望访问循环中的下一个单元格值 import openpyxl wb = openpyxl.load_workbook('test.xlsx') wb = wb.get_sheet_by_name("Sheet 1") for row in wb['A1' : 'B150']: for cell in row: print cell.value # prints current active cell

我正在创建一个循环来遍历工作表中的单元格。在某些情况下,我希望访问循环中的下一个单元格值

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
wb = wb.get_sheet_by_name("Sheet 1")


for row in wb['A1' : 'B150']:
    for cell in row:
        print cell.value  # prints current active cell
        if something:
            # print next cell value

请建议访问循环中下一个单元格值的方法。我正在使用python 2.7。提前谢谢

好吧,这不是一个特定于OpenPyXl的问题,而是一个关于迭代器的问题

您所能做的就是编写一个函数,该函数迭代一个序列并返回当前项和下一项

例如:

def iter_curr_next(seq):
    iter_seq = iter(seq)
    curr_item = next(iter_seq)
    next_item = next(iter_seq)  # may raise StopIteration
    yield curr_item, next_item
    while True:
        curr_item = next_item
        next_item = next(iter_seq)  # may raise StopIteration
        yield curr_item, next_item
注意:此函数返回直到最后一个项目(当前项目、下一个项目)的夫妇

以下是如何使用此功能(例如,当当前项为奇数时,我们显示当前项和下一项):

你会得到:

1 2
3 5
5 6
但是,这有点复杂

相反,您可以创建一个列表(或元组)并以这种方式对其进行迭代:

for curr_item, next_item in zip(row[:-1], row[1:]):
    if curr_item % 2 == 1:
        print(curr_item, next_item)
你会得到同样的结果


事实上,当您使用OpenPyXl迭代工作表的行时,每一行都是一个元组。因此,前面的
for
循环将起作用(请参阅
openpyxl.worksheet.worksheet.worksheet.get\u squared\u range
函数的实现)。

如果同一行中没有下一个单元格怎么办?是否要查找下一行的第一个单元格?
对于行中的单元格:
您已经在循环单元格了。既然您已经知道前一个单元格的值,为什么不使用“后看”方法来代替“前看”实现呢?下一个单元格是否有值,我需要检查@rawing是否有语法或方法用于“前看”实现@mpf82
for curr_item, next_item in zip(row[:-1], row[1:]):
    if curr_item % 2 == 1:
        print(curr_item, next_item)