Python从剪贴板中保存xlPicture

时间:2013-06-24 18:20:07

标签: python python-imaging-library win32com

目前我通过电话保存在剪贴板中的xlPicture(通过win32com):

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()返回None,我认为xlPicture在某种程度上不是调用的兼容类型。有什么我可以改变使用ImageGrab或是否有一个完全替代解决方案来保存xlPicture?谢谢!

1 个答案:

答案 0 :(得分: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现在可以获得的图像。