遍历工作簿中的工作表 - 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')
我正在尝试打开一个 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')