2013-03-02 30 views
8

Matplotlib dosyalarını .tiff görüntüleri olarak kaydediyorum. Bir excel dosyasını açıp oradaki görüntüyü yapıştırmak istiyorum. Openpyxl, görüntü gömülmesini desteklemiyor gibi görünmektedir. xlwt yapar ama sadece bmp.Matplotlib grafiklerini Excel'e programlı olarak ekleyebilir miyim?

Programlanabilir bir şekilde tiff'i bmp'ye programlayabilirseniz, bu da yardımcı olabilir.

Fikirler ya da kabul edilir. Grafiklerin zaman hacmi küçük (yaklaşık olarak 10 dosyasının başına) olduğu gibi benzer

Ancak bmp tiff dönüştürme

Embed multiple jpeg images into EXCEL programmatically?

kabul edilebilir.

cevap

7

Web'de iki farklı bağlantıdan bulduğum şey, benim için mükemmel bir şekilde çalıştı.

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

kodun görüntü bölümü burada http://www.daniweb.com/software-development/python/threads/253957/converting-an-image-file-png-to-a-bitmap-file Ene derivatları yanıtından geçerli: Matplotlib burada faydalanmak budur png dosyaları tasarrufu sağlar.

xlwt sadece http://www.simplistix.co.uk/presentations/python-excel.pdf adresinde bulduğum xlwt belgelerini oluşturur.

1

Openpyxl aslında görüntü gömülmesini destekliyor ve .png veya var olan .xlsx dosyalarını kullananlar için daha iyi çalışabilir! Aşağıdaki kod, input.xlsx öğesinin A1 hücresine bir görüntü ekler ve dosyayı çıktı.xlsx olarak kaydeder.

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

Bu benim için çalıştı:

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') 
İlgili konular