2012-06-04 22 views
7

È possibile inserire un'immagine (jpeg, png, ecc.) Usando openpyxl?Inserisci immagine in openpyxl

Fondamentalmente voglio posizionare un'immagine generata con un grafico sottostante.

Non vedo nulla nella documentazione, che sembra essere un po 'carente rispetto alla maturità del codice.

risposta

8

Il seguente inserisce un'immagine nella cella A1. Regolare la posizione dell'immagine alle proprie esigenze o di gestire la creazione dell'immagine PIL te stesso e la mano che a 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

sono file gif supportati? – user299709

+0

@ user299709 Naturalmente. Hai avuto difficoltà a trovare l'elenco dei formati supportati da PIL? – Anthon

+1

Sto usando Xlsxwriter e non supporta l'incorporamento di un'immagine gif, quindi mi chiedo se openpyxl lo fa. – user299709

6

Nelle attuali versioni di openpyxl (fino a 2.4.5 almeno) si deve chiamare immagine in questo modo:

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

Utilizzando l'esempio di Anthon:

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

Fornire un aggiornamento completo su come fare questo. Questa soluzione utilizza openpyxl versione 2.4.5.

Ho scaricato un'immagine nella directory locale, aperto una cartella di lavoro esistente e salvata con l'immagine inserita.

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

Risultati:

enter image description here