使用openpyxl读取多个文件

问题描述 投票:0回答:2

我有一些文件名的列表

ListOfFiles = ['filename1.xlsm', 'filename2.xlsm',...]

我想做的是以自动方式加载这些文件。所以我写了以下内容:

from openpyxl import load_workbook
for i in LisOfFiles:
    xl = load_workbook(ListOfFiles[i], read_only=True)

但是我得到了TypeError: list indices must be integers or slices, not str我该如何解决?

python excel openpyxl
2个回答
0
投票

您已经遍历列表。无需再次对其进行索引:

from openpyxl import load_workbook

for path in ListOfFiles:
    xl = load_workbook(path, read_only=True)

编辑

请注意,在上面的代码中,每次都会重新分配xl。这可能不是您想要的。

您可以在列表中捕获工作簿:

from openpyxl import load_workbook

workbooks = []
for path in ListOfFiles:
    workbooks.append(load_workbook(path, read_only=True))

可以通过使用列表理解]来缩短::

workbooks = [
    load_workbook(path, read_only=True)
    for path in ListOfFiles
]

如果您希望能够通过文件名解决它们,请使用dict comprehension

workbooks = {
    path: load_workbook(path, read_only=True)
    for path in ListOfFiles
}

0
投票

尝试在for循环print(i)中打印i。基本上,您尝试使用字符串访问列表的元素。在第一次迭代中,这意味着i = 'filename1.xlsm'转换为LisOfFiles['filename1.xlsm']

© www.soinside.com 2019 - 2024. All rights reserved.