我可以通过编程将matplotlib图形插入Excel吗?

kokeuurv  于 2023-05-18  发布在  其他
关注(0)|答案(3)|浏览(134)

我正在将matplotlib文件保存为.tiff图像。我希望能够然后打开Excel文件并粘贴图像有。
openpyxl似乎不支持图像嵌入。XLWT只做BMP。
或者,如果我可以编程地将tiff转换为bmp,这可能也有帮助。
任何一个的想法都是受欢迎的。
类似于
Embed multiple jpeg images into EXCEL programmatically?
但是,从tiff转换为bmp是可以接受的,因为我的图形量很小(每个文件大约10个)。

jobtbby3

jobtbby31#

Openpyxl实际上支持图像嵌入,并且可能更适合那些使用.png或现有.xlsx文件的人!下面的代码将一个图像附加到input.xlsx的单元格A1中,并将该文件另存为output.xlsx。

import matplotlib.pyplot as plt
import openpyxl

# Your plot generation code here...
plt.savefig("myplot.png", dpi = 150)

wb = openpyxl.load_workbook('input.xlsx')
ws = wb.active

img = openpyxl.drawing.image.Image('myplot.png')
img.anchor(ws.cell('A1'))

ws.add_image(img)
wb.save('output.xlsx')

编辑2023:看起来人们仍然在阅读近7年后!我更新了原始代码中的第7行,以反映那些复制/粘贴的更新。
2020年6月编辑:我被告知openpyxl自从写这篇文章以来已经发生了变化。第7行已从:
img = openpyxl.drawing.Image('myplot.png')
img = openpyxl.drawing.image.Image('myplot.png')
现在有一个额外的图像。

h6my8fg2

h6my8fg22#

这是我从网上两个不同的链接中发现的,这对我来说非常有效。Matplotlib允许保存png文件,这就是我在这里使用的:

from PIL import Image

file_in = "image.png"
img = Image.open(file_in)
file_out = 'test1.bmp'
print len(img.split()) # test
if len(img.split()) == 4:
    # prevent IOError: cannot write mode RGBA as BMP
    r, g, b, a = img.split()
    img = Image.merge("RGB", (r, g, b))
    img.save(file_out)
else:
    img.save(file_out)

from xlwt import Workbook
w = Workbook()
ws = w.add_sheet('Image')
ws.insert_bitmap(file_out, 0, 0)
w.save('images.xls')

图像部分的代码是从Ene Urans响应这里http://www.daniweb.com/software-development/python/threads/253957/converting-an-image-file-png-to-a-bitmap-file
xlwt只是我在http://www.simplistix.co.uk/presentations/python-excel.pdf找到的xlwt文档。

jvidinwx

jvidinwx3#

这对我来说是可行的:

import openpyxl

wb = openpyxl.load_workbook('input.xlsx')
ws = wb.active

img = openpyxl.drawing.image.Image('myplot.png')
ws.add_image(ws.cell('A1'))

ws.save('output.xlsx')

相关问题