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)