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

时间:2016-08-26 19:06:28

标签: python matplotlib openpyxl

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

这里的关键似乎是我将文件保存到工作簿的方式和位置。例如,如果在上一个图像上传到最后一个工作表后输入xfile.save(' bikes.xlsx'),它只显示最后一个图像,而不显示其他工作表中的其他图像。如果在第一个图像加载到其工作表后是类型保存,则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')

1 个答案:

答案 0 :(得分:3)

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

#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')

感谢您的帮助。