2013-06-24 77 views
1

目前,我有一個xlPicture從通話(通過win32com)保存在我的剪貼板:Python的保存xlPicture從剪貼板

ws.Range(ws.Cells(1,1),ws.Cells(8+rows,total_length)).CopyPicture() #Copies xlPicture to clipboard 

現在我想將圖像保存在我的剪貼板到一個文件中,所以我嘗試使用PIL:

from PIL import ImageGrab 
    img = ImageGrab.grabclipboard() 
    img.save(os.path.join(r'C:\Windows\Temp\WS_Template_Images','test.png'),'PNG') 

ImageGrab.grabclipboard()沒有回報,我認爲xlPicture是有點不兼容的類型呼叫。有什麼我可以改變使用ImageGrab或有一個完全替代解決方案來保存xlPicture?謝謝!

回答

1

原來我可以用簡單的工作圍繞着實現這一目標:

ws.Range(ws.Cells(1,1),ws.Cells(8+rows,total_length)).CopyPicture()  
wb = excel.Workbooks.Add() 
ws = wb.ActiveSheet 
ws.Paste() 
ws.Shapes('Picture 1').Copy() 
img = ImageGrab.grabclipboard() 
imgFile = os.path.join(r'C:\Windows\Temp\WS_Template_Images','test.png') 
img.save(imgFile) 

在新工作簿粘貼的圖像,然後重新複製和保存工作,因爲這樣一來這些單元的數據鏈接斷開,它是考慮ImageGrab現在可以獲得的圖像。

+0

一個警告:Excel不會將大圖像複製到系統剪貼板。它們將出現在Office剪貼板上,但您無法爲它們使用ImageGrab.grabclipboard()。 – Vijchti