Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代工作簿中的工作表-Python嵌套For循环_Python_For Loop_Openpyxl - Fatal编程技术网

迭代工作簿中的工作表-Python嵌套For循环

迭代工作簿中的工作表-Python嵌套For循环,python,for-loop,openpyxl,Python,For Loop,Openpyxl,我试图打开一个excel工作簿,并在循环中遍历每个工作表。这里是第一个循环: wb = openpyxl.load_workbook('snakes.xlsx') for i in wb.worksheets: i= 0 wb.get_sheet_names() i = i + 1 一旦我可以成功地浏览这些工作表中的每一个,我想做一个嵌套循环,它将获取我的每一个png文件并将它们放置在工作表中。需要注意的是,图纸名称和png文件具有相同的名称(国家名称),存储在名为c

我试图打开一个excel工作簿,并在循环中遍历每个工作表。这里是第一个循环:

wb = openpyxl.load_workbook('snakes.xlsx')
for i in wb.worksheets: 
    i= 0
    wb.get_sheet_names()
    i = i + 1
一旦我可以成功地浏览这些工作表中的每一个,我想做一个嵌套循环,它将获取我的每一个png文件并将它们放置在工作表中。需要注意的是,图纸名称和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循环以便代码在图像中循环并将其写入工作表,您有什么想法吗?

您的代码片段似乎显示了对
for
循环在Python中如何工作的基本误解

要在每张图纸上循环,您的轨迹是正确的:

wb = openpyxl.load_workbook('test.xlsx')
for sheet in wb.worksheets:
    # do stuff with "sheet"
    pass
for
循环(
sheet
在我的示例中,在您的示例中,
i
)中的变量是列表的成员(
wb.worksheets
):它不是整数索引。在您的示例中,在每个循环中立即用0覆盖
i
的值,因此没有工作表

还值得注意的是,从工作簿对象调用了
get\u sheet\u names()
,因此无需在for循环中调用它:

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

为什么要在这里使用嵌套循环?您可以在单for循环中执行两项操作。由于您可能有一个国家名称列表
名称
,因此您可以使用
枚举(wb.worksheets)
并使用
名称[i]
打开图像。如果你想让它更像蟒蛇的话,也可以把拉链拉上。同样在第一个循环中,您使用
i
作为迭代器,然后在循环内部重新分配
i
。你不应该这样做真的很感谢你在这方面的帮助!对不起,我对python还很陌生。我在wb.worksheets中为ws使用了以下代码:wb=openpyxl.load_工作簿('snakes.xlsx'):img=openpyxl.drawing.image.image(ws.title+'.png')ws.add_image(img,'K1')wb.save('snakes.xlsx'),我收到如下错误消息“IOError:[Errno 2]没有这样的文件或目录:u'sheet1.png。为什么工作表标题前会出现一个u?png文件是sheet 1。@如果您还有其他问题,请告诉我。否则,请向上投票/接受!参见我上面的问题?我还尝试添加了我的字典+png,如下所示:img=openpyxl.drawing.image.image(country+'.png')但我得到了另一个错误,如下所示:TypeError:+不支持的操作数类型:'dict'和'str'。今天不是一条快乐的python,
u
代表unicode(),但这不是问题:问题在于png文件有一个空格(
sheet 1
而不是
sheet 1
).Woops!不,那只是我添加了一个空间!我解决了我的问题。.我在那里有文件夹(但没有包含在代码中)的原因是文件夹=excel工作表的位置。所以当我做以下操作时:img=openpyxl.drawing.image.image(folder+ws.title+'.png')它工作得很好!!!你是最好的@brianpck。谢谢你教我。
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')