Matplotlib/Openpyxl - 将多个图像粘贴到不同的工作表中 excel

Matplotlib/Openpyxl - Pasting multiple images into different worksheets excel

我在理解时遇到了真正的问题 python 正在阅读我的代码并需要一些帮助。我在一个 excel 工作簿中有多个工作表,所有工作表都包含一个数据框 table 和一个图表。我以 运行 所有不同数据框的方式组织我的代码,将它们写入每个 excel 工作表,绘制每个图表,将图表保存到 png 文件,然后使用 openpyxl 加载图像到每个工作表。

这里的关键似乎是我将文件保存到工作簿的方式和位置。例如,如果我在最后一张图片上传到最后一张工作表后键入 xfile.save('bikes.xlsx'),它只会显示最后一张图片和其他工作表中其他图片的 none .如果在第一个图像加载到其工作表后键入保存,excel 显示第一个工作表的图像。如果我在每个图像加载到他们的工作表后放置保存功能,则只有最后一个图像显示在最后一个工作表中。

#Plot chart 1
df3.plot(x='Length', y=['types of cats'], figsize=(8,4))
plt.savefig('Typesofcats.png')

#Write PNG file to existing worksheet
from openpyxl import Workbook
from openpyxl.drawing.image import Image
xfile1 = openpyxl.load_workbook('Things.xlsx')
sheet1 = xfile1.get_sheet_by_name('Types of Cats')
img1 = Image('Typesofcats.png')
sheet1.add_image(img1, 'I6')
xfile.save('Things.xlsx')

#Plot chart 2
df5.plot(x='Length', y=['Types of dogs'], figsize=(8,4))
plt.savefig('Typesofdogs.png')

#Write PNG file to existing worksheet
from openpyxl import Workbook
from openpyxl.drawing.image import Image
xfile2 = openpyxl.load_workbook('Things.xlsx')
sheet2 = xfile2.get_sheet_by_name('Types of dogs')
img2 = Image('Typesofdogs.png')
sheet2.add_image(img2, 'I6')
xfile2.save('Things.xlsx')

#Plot chart 3
df6.plot(x='Length', y=['Types of pigs'], figsize=(7,3))
plt.savefig('Typesofpigs.png')

#Write PNG file to existing worksheet
from openpyxl import Workbook
from openpyxl.drawing.image import Image
xfile3 = openpyxl.load_workbook('Things.xlsx')
sheet3 = xfile2.get_sheet_by_name('Types of pigs')
img3 = Image('Typesofpigs.png')
sheet3.add_image(img3, 'F6')
xfile3.save('Things.xlsx')

啊,好的,是的!因为我每次都打开和关闭工作簿,所以图像会从以前的工作表中删除。如果我只打开一次连接,将所有图像粘贴到每个工作表,然后关闭它就可以了。

#Write PNG file to existing worksheet
from openpyxl import Workbook
from openpyxl.drawing.image import Image
xfile = openpyxl.load_workbook('Things.xlsx')
sheet = xfile.get_sheet_by_name('Types of Cats')
img = Image('Typesofcats.png')
sheet.add_image(img, 'L6')
sheet1 = xfile.get_sheet_by_name('Types of Dogs')
img1 = Image('Typesofdogs.png')
sheet1.add_image(img1, 'I6')
sheet2 = xfile.get_sheet_by_name('Types of Pigs')
img2 = Image('Typesofpigs.png')
sheet2.add_image(img2, 'I6')
xfile.save('Things.xlsx')

感谢您的帮助。