Openpyxl:迭代单元格的范围

我会写一个单元格的范围从列表中取得的一系列值。

视图

def create_excel(avg): wb = load_workbook('output/file_base.xlsx') ws = wb.active ws['D20'] = avg[0] ws['D21'] = avg[1] ws['D22'] = avg[2] ws['D23'] = avg[3] ws['D24'] = avg[4] ws['D25'] = avg[5] wb.save('out.xlsx') return 1 

我会做这个使用循环,我已经尝试了以下内容:

 start, stop = 20,26 for index, row in enumerate(ws.iter_rows()): if start < index < stop: ws.cell[index] = avg[index] 

但是它返回:

 list index out of range 

我怎样才能做到这一点? 我使用的是openpyxl 2.3

您可以如下指定行和列:

 import openpyxl avg = [10, 20, 25, 5, 32, 7] wb = openpyxl.load_workbook('output/file_base.xlsx') ws = wb.active for row, entry in enumerate(avg, start=20): ws.cell(row=row, column=4, value=entry) wb.save('out.xlsx') 

这个遍历你的平均值,并且使用Python的enumerate函数来同时计算你的值。 通过告诉它以20的值开始,它可以被用作写入单元格的行值。