1

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

4

1 回答 1

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 现在可以获取的图像。

于 2013-06-24T23:07:26.370 回答