从Excel复制图像并使用python保存

时间:2016-05-12 07:29:03

标签: python excel

我正在尝试从名为Inputs_v3的excel和名为Inputs的工作表中复制图像并保存。代码如下`

import win32com.client as win32       
from PIL import ImageGrab 
from xlrd import open_workbook   
import os

excel = win32.gencache.EnsureDispatch("Excel.Application")
wb = open_workbook('Inputs_v3.xlsm')
r = wb.sheet_by_name('Inputs')
r.CopyPicture()

im = ImageGrab.grabclipboard()
im.save('somefile.png','PNG')

`错误如下

'Attribute error: 'Sheet' object has no attribute 'CopyPicture''

请建议我做错了。谢谢提前

3 个答案:

答案 0 :(得分:2)

以下代码将为您提供访问Excel工作表的对象和方法所需的win32com参考:

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open('myworkbook.xlsx')
ws = wb.Worksheets('worksheet_name')         # alternatively Worksheets(1) etc

现在你可以做,例如:

ws.Shapes(1).CopyPicture()

我在Windows 7上使用Python 3.4,pywin32 219和Excel 2010进行了测试。

请注意,这根本不涉及xlrd - 这是一个无需在计算机上安装Excel即可读取Excel文件的软件包,但我不知道它是否支持从Excel工作簿获取图像或从Excel工作簿获取图像

答案 1 :(得分:1)

使用一个名为excel2img的库,您可以在一行中从任何excel文件中截取屏幕截图

导入excel2img excel2img.export_img(“ Excel文件完整路径”,“目标图像完整路径”,“ Excel SheetName”,无)

,您还可以识别特定的单元格范围。

导入excel2img excel2img.export_img(“ test.xlsx”,“ test.bmp”,“”,“ Sheet2!B2:C15”)

我希望这会有所帮助。

答案 2 :(得分:0)

在我看来,您需要包含图像的单元格位置。 尝试(请替换为单元格值):

import win32com.client as win32       
from PIL import ImageGrab 
from xlrd import open_workbook   
import os

excel = win32.gencache.EnsureDispatch("Excel.Application")
wb = open_workbook('Inputs_v3.xlsm')
r = wb.sheet_by_name('Inputs')
r.Range(r.Cells(1,1),r.Cells(8+rows,total_length)).CopyPicture()

im = ImageGrab.grabclipboard()
im.save('somefile.png','PNG')

或者,您也可以使用图表对象:

import win32com.client as win32
from PIL import ImageGrab
from xlrd import open_workbook
import os

excel = win32.gencache.EnsureDispatch("Excel.Application")
wb = open_workbook('Inputs_v3.xlsm')
r = wb.sheet_by_name('Inputs')
for chart in r.Chartobjects():
    //implement your custom logic here
    chart.CopyPicture()
im = ImageGrab.grabclipboard()
im.save('somefile.png','PNG')

其他参考资料:

Python save xlPicture from clipboard

Export Charts from Excel as images using Python

https://msdn.microsoft.com/en-/library/microsoft.office.interop.excel.picture.copypicture(v=office.14).aspx