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

我正在创build一个循环遍历表中的单元格。 在某些情况下,我想要访问循环中的下一个单元格值。

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 

请build议一种方法来访问循环中的下一个单元格值。 我正在使用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 

注意:这个函数返回夫妇(curr_item,next_item)直到最后一个。

这里是你如何使用这个function(例如,当前是一个奇数时,我们显示当前和下一个项目):

 row = [1, 2, 3, 5, 6, 5] for curr_item, next_item in iter_curr_next(row): if curr_item % 2 == 1: print(curr_item, next_item) 

你得到:

 1 2 3 5 5 6 

但是,这有点复杂

你可以做的是创build一个列表(或一个元组),然后迭代它:

 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_squared_range函数的实现)。