2013-03-02 35 views
8

Tôi đang lưu các tệp matplotlib dưới dạng hình ảnh .tiff. Tôi muốn để có thể sau đó mở một tập tin excel và dán hình ảnh đó.Tôi có thể chèn đồ thị matplotlib vào Excel theo chương trình không?

doesnt openpyxl dường như hỗ trợ nhúng hình ảnh. xlwt làm nhưng chỉ bmp.

Bên ngoài nếu tôi có thể chuyển đổi tiff thành bmp theo chương trình, điều đó cũng có thể hữu ích.

Ý tưởng được chào đón.

Tương tự như

Embed multiple jpeg images into EXCEL programmatically?

Tuy nhiên chuyển đổi từ tiff sang bmp là chấp nhận được như khối lượng của tôi về đồ thị là nhỏ (khoảng 10 cho mỗi tập tin).

Trả lời

7

Đây là những gì tôi tìm thấy từ hai liên kết khác nhau trên web, hoạt động đó hoàn hảo cho tôi. Matplotlib cho phép lưu các file png đó là những gì tôi tận dụng ở đây:

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

Hình ảnh một phần của mã là từ Ene Urans phản ứng ở đây http://www.daniweb.com/software-development/python/threads/253957/converting-an-image-file-png-to-a-bitmap-file.

Xlwt chỉ đơn giản là tạo tài liệu về xlwt mà tôi tìm thấy tại http://www.simplistix.co.uk/presentations/python-excel.pdf.

1

Openpyxl thực sự hỗ trợ nhúng hình ảnh và có thể hoạt động tốt hơn cho những người đang sử dụng tệp .png hoặc tệp .xlsx hiện có! Mã dưới đây gắn thêm một hình ảnh vào ô A1 của input.xlsx và lưu tệp dưới dạng 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('myplot.png') 
img.anchor(ws.cell('A1')) 

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

này làm việc ra cho tôi:

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') 
Các vấn đề liên quan