遍历工作簿中的工作表 - Python 嵌套 For 循环

Iterate through worksheets in workbook- Python Nested For loop

我正在尝试打开一个 excel 工作簿并循环遍历每个工作sheet。这是第一个循环:

wb = openpyxl.load_workbook('snakes.xlsx')
for i in wb.worksheets: 
    i= 0
    wb.get_sheet_names()
    i = i + 1

一旦我可以成功完成这些作品中的每一个sheet,我想做一个嵌套循环,它获取我的每个 png 文件并将它们放入作品中sheet秒。重要的是要注意 sheet 名称和 png 文件具有相同的名称(国家名称)存储在名为 country_names 的数据框中。

第二个循环:

for ws in wb.worksheets: 
    img = openpyxl.drawing.image.Image(folder + str(var) + '.png')
    ws.add_image(img, 'K1')
    wb.save('snakes.xlsx')

关于如何执行嵌套 for 循环以便代码循环遍历图像并将它们写入作品sheets 的任何想法?

您的代码片段似乎对 for 循环在 Python 中的工作方式存在根本性误解。

要遍历每个 sheet,您的方向是正确的:

wb = openpyxl.load_workbook('test.xlsx')
for sheet in wb.worksheets:
    # do stuff with "sheet"
    pass

for 循环中的变量(在我的示例中为 sheet,在您的示例中为 i)是列表的成员 (wb.worksheets):它不是一个整数索引。在您的示例中,您立即在 每个循环 中用 0 覆盖 i 的值,因此没有 sheet 可以使用。

另外值得注意的是get_sheet_names()是从工作簿对象中调用的,所以不需要在for循环内调用:

>>> wb.worksheets
[<Worksheet "Sheet1">, <Worksheet "Sheet2">, <Worksheet "Sheet3">]

最后,你的第二个 "nested for loop"(甚至没有嵌套)是正确的,除了它在每个循环中保存新的 Excel 文件,这是浪费。

由于你注明作品sheet名称与PNG名称相同,所以找图时直接调用作品sheet的属性title即可。

下面应该是一个工作示例:

wb = openpyxl.load_workbook('snakes.xlsx')
for ws in wb.worksheets: 
    img = openpyxl.drawing.image.Image(ws.title + '.png')
    ws.add_image(img, 'K1')
wb.save('new.xlsx')