"list_or_dict must be a list or a dict" 在 Python 的 openpyxl 包中使用追加时

"list_or_dict must be a list or a dict" when using append in openpyxl package of Python

基于本教程:LINK我们有这样的结构:

from openpyxl import Workbook
from openpyxl.compat import range

wb = Workbook()
ws = wb.active

for row in range(1,3):
    ws.append(range(100))

wb.save(finename ='mtest2.xlsx')

此 returns 以下错误 ws.append(range(100)):

TypeError: list_or_dict must be a list or a dict 

有什么问题?

显然 ws.append 的参数必须是字典或列表。大概您正在使用 Python 3.x,其中 range no longer returns a list(它现在的行为类似于 Python 2.x 的 xrange)。

最简单的修复方法是将 range 显式转换为 list:

for row in range(1, 3):
    ws.append(list(range(100)))

正如@jonrsharpe 指出的那样,您不能像这样使用范围。 Python 中的范围本质上仅用于循环。您可以将其转换为列表:list(range(100)) 如果您确实需要明确的值。