2012-06-04 47 views
7

Có thể chèn hình ảnh (jpeg, png, v.v ...) bằng openpyxl không?Chèn hình ảnh vào openpyxl

Về cơ bản, tôi muốn đặt hình ảnh được tạo bằng biểu đồ bên dưới hình ảnh đó.

Tôi không thấy bất kỳ điều gì trong tài liệu, dường như thiếu một chút so với độ chín của mã.

Trả lời

8

Sau đây chèn hình ảnh vào ô A1. Điều chỉnh vị trí hình ảnh yêu cầu của bạn hay xử lý việc tạo ra các hình ảnh PIL bản thân và tay đó để 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

được file gif hỗ trợ? – user299709

+0

@ user299709 Tất nhiên. Bạn có gặp khó khăn khi tìm danh sách các định dạng mà PIL hỗ trợ không? – Anthon

+1

Tôi đang sử dụng Xlsxwriter và nó không hỗ trợ nhúng một hình ảnh gif để im tự hỏi nếu openpyxl không. – user299709

6

Trong các phiên bản hiện tại của openpyxl (lên đến 2.4.5 ít nhất), bạn phải gọi hình ảnh như thế này:

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

Sử dụng ví dụ Anthon của:

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

Cung cấp một bản cập nhật đầy đủ về cách để làm điều này. Giải pháp này sử dụng phiên bản openpyxl 2.4.5.

Tôi đã tải một hình ảnh về thư mục cục bộ của mình, mở một sổ làm việc hiện có và lưu với hình ảnh được chèn vào.

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

Kết quả:

enter image description here

Các vấn đề liên quan