列表索引超出范围Openpyxl

时间:2019-04-12 04:44:56

标签: python openpyxl

我想自动编写Excel工作表,并使用openpyxl可以将公式写入到“ N”列的单元格中,但是当我尝试对“ O”列进行相同操作时,却出现了索引错误。

我尝试使用Insert_cols添加列,但显示“未定义名称'insert_cols'”,而且我不确定它是否可以解决我的问题。

for row, cellObj in enumerate(list(sheet.columns)[14]):
     b=row+1
     c=row+14
     print (cellObj,b,c)
     n = '=AVERAGE(J%d:J%d)' % (b, c)
     # print n # check that n gets assigned correct string value
     cellObj.value = n
IndexError                                Traceback (most recent call last)
<ipython-input-32-ab8bd56d638c> in <module>
----> 1 for row, cellObj in enumerate(list(sheet.columns)[14]):
      2          b=row+1
      3          c=row+14
      4          print (cellObj,b,c)
      5          n = '=AVERAGE(J%d:J%d)' % (b, c)

IndexError: list index out of range

我希望它将其写入“ O”列,但它向我显示索引错误。

---更新

wbsheet.active()
sheet['Z7'] = '= SUM(A1:A5)'

我像上面的代码一样向Z7单元格传递了一个随机值,之后list(sheet.columns)约束了列,直到Z可以请您解释这里发生的事情以及是否有方法声明我需要而不是使用技巧。

1 个答案:

答案 0 :(得分:0)

问题在于您定义列表的方式:

list(sheet.columns)[14]

这会将sheet.columns转换为列表,但是[14]仅会为您提供索引14处的list元素。

以下将为您实现的工作吗?

list(sheet.columns)

这样,您的for循环将获得实际的列列表,这样可以更好地工作。