2012-06-04 13 views
7

Ist es möglich, ein Bild (JPEG, PNG usw.) mit openpyxl einzufügen?Bild in openpyxl einfügen

Grundsätzlich möchte ich ein generiertes Bild mit einem Diagramm darunter platzieren.

Ich sehe nichts in der Dokumentation, die im Vergleich zur Reife des Codes ein wenig fehlt.

Antwort

8

Im Folgenden wird ein Bild in Zelle A1 eingefügt. Stellen Sie die Bildposition auf Ihre Bedürfnisse oder die Schaffung des PIL Bild behandeln sich selbst und die Hand, das zu Image()

import openpyxl 

wb = openpyxl.Workbook() 
ws = wb.worksheets[0] 
img = openpyxl.drawing.Image('test.jpg') 
img.anchor(ws.cell('A1')) 
ws.add_image(img) 
wb.save('out.xlsx') 
+0

werden GIF-Dateien unterstützt? – user299709

+0

@ user299709 Natürlich. Hatten Sie Schwierigkeiten, die Liste der von PIL unterstützten Formate zu finden? – Anthon

+1

Ich benutze Xlsxwriter und es unterstützt nicht die Einbettung eines gif-Bildes, also frage ich mich, ob openpyxl dies tut. – user299709

6

In aktuellen Versionen von openpyxl (bis 2.4.5 mindestens) haben Sie Bild so nennen:

img = openpyxl.drawing.image.Image('test.jpg')

Mit Anthons Beispiel:

import openpyxl 

wb = openpyxl.Workbook() 
ws = wb.worksheets[0] 
img = openpyxl.drawing.image.Image('test.jpg') 
img.anchor(ws.cell('A1')) 
ws.add_image(img) 
wb.save('out.xlsx') 
2

eine vollständige Aktualisierung Providing, wie dies zu tun. Diese Lösung verwendet openpyx Version 2.4.5.

Ich habe ein Bild in mein lokales Verzeichnis heruntergeladen, eine vorhandene Arbeitsmappe geöffnet und mit dem eingefügten Bild gespeichert.

import openpyxl 
from openpyxl import load_workbook 
from openpyxl import Workbook 
from openpyxl.drawing.image import Image 
from openpyxl.utils import coordinate_from_string 

openpyxl_version = openpyxl.__version__ 
print(openpyxl_version) #to see what version I'm running 

# downloaded a .png to local directory manually from 
# "https://www.python.org/static/opengraph-icon-200x200.png" 

#change to the location and name of your image 
png_loc = r'c:\users\me\opengraph-icon-200x200.png' 

# test.xlsx already exists in my current directory 

wb = load_workbook('test.xlsx') 
ws = wb.active 
my_png = openpyxl.drawing.image.Image(png_loc) 
ws.add_image(my_png, 'B3') 
wb.save('test.xlsx') 

Ergebnisse:

enter image description here