最近在学习Python+Openpyxl,遇到了IndexError: list index out of range,最终发现是生成器使用错误导致的,希望对也在学习python的朋友有所帮助。
错误1:
#打算截取excel文件的片段,打印出来
import openpyxl
book = openpyxl.load_workbook(r"C:\\Users\\vitus\Desktop\\abc.xlsx")
sheet = book[book.sheetnames[3]]
cell_range = list(sheet.iter_rows(min_row=4,min_col=10, max_col=20, max_row=30))
print(cell_range[4])
print(cell_range[5])
print(cell_range[6])
#只输出的print(cell_range[4])的内容,后两句的print成功输出,报错“IndexError: list index out of range”
错误2:
#使用for循环print输出内容
import openpyxl
book = openpyxl.load_workbook(r"C:\\Users\\vitus\Desktop\\abc.xlsx")
sheet = book[book.sheetnames[3]]
cell_range = sheet.iter_rows(min_row=4,min_col=10, max_col=20, max_row=30)
for n in range(0,26):
for m in range(0, 10):
print(list(cell_range[n][m]))
#还是输出错误“IndexError: list index out of range”
修正后的代码:
import openpyxl
book = openpyxl.load_workbook(r"C:\\Users\\vitus\Desktop\\abc.xlsx")
sheet = book[book.sheetnames[3]]
cell_range = list(sheet.iter_rows(min_row=4,min_col=10, max_col=20, max_row=30))
###在这里就创建list(),可以解决问题
for n in range(0,26):
for m in range(0, 10):
print(cell_range[n][m]) ###不要在这里用list()
这个错误应该跟生成器的属性相关,更详细的内容,我也在研究,希望各位大牛能跟帖指导指导,不胜感激。