2012-06-04 153 views
7

¿Es posible insertar una imagen (jpeg, png, etc.) usando openpyxl?Insertar imagen en openpyxl

Básicamente quiero colocar una imagen generada con un gráfico debajo de ella.

No veo nada en la documentación, que parece ser un poco insuficiente en comparación con la madurez del código.

Respuesta

8

Lo siguiente inserta una imagen en la celda A1. Ajustar la ubicación de la imagen a sus necesidades o manejar la creación de la imagen de sí mismo y PIL mano que 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

se soportan archivos GIF? – user299709

+0

@ user299709 Por supuesto. ¿Te costó encontrar la lista de formatos que admite PIL? – Anthon

+1

Estoy usando Xlsxwriter y no admite la incrustación de una imagen gif así que me pregunto si openpyxl lo hace. – user299709

6

En las versiones actuales de openpyxl (hasta 2.4.5 por lo menos) que tiene que llamar imagen como esta:

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

Usando el ejemplo de 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

Proporcionar una actualización completa sobre cómo hacer esto. Esta solución usa openpyxl versión 2.4.5.

Bajé una imagen a mi directorio local, abrí un libro existente y lo guardé con la imagen insertada.

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

Resultados:

enter image description here

Cuestiones relacionadas