利用python3.7导出excel图片的教程网上很多都是搞解压那套,而且基本是复制的一模一样的教程,本例给出的图片导出源码转载自csdn。
from PIL import ImageGrabimport win32com.client as win32# 能把所有图片按原图象素导出来excel = win32.gencache.EnsureDispatch('Excel.Application')workbook = excel.Workbooks.Open(r'C:\\Users\\admin\\Desktop\\picexcel.xlsx')for sheet in workbook.Worksheets:for i, shape in enumerate(sheet.Shapes):if shape.Name.startswith('Picture'):shape.Copy()image = ImageGrab.grabclipboard()image.save('{}.jpg'.format(i+1), 'jpeg')excel.Quit()
这是网上能找的最简单的使用python导出excel图片的教程了。下面介绍的另外一种方法,严格意义上来讲不是图片导出,而是将excel单元格直接复制为图片导出来,但是测试的时候只有在一张图的时候能成功,如果图片过多会导致从excel里面复制出的图片一模一样,尚未找到解决办法。
import win32com.client as win32 # 打开excel文件#pip install pypiwin32#from PIL import ImageGrab #用于获取复制的图片root_path = "C:\\Users\\ranjuan\\Desktop\\"excel = win32.Dispatch('Excel.Application') #获取Excel#excel.Visible = Truewb = excel.Workbooks.Open(root_path+'商品示例.xlsx') # 打开excel文件ws = wb.Worksheets('Sheet1') # 获取Sheet1score = [100,90,50,10,20,310,278,155,120,140,70,110,345,444] # 需要写入excel的成绩数据# 遍历excel将数据写入单元格for i in range(2, len(score)+2):Range = 'B' + str(i) # B2到B8单元格ws.Range(Range).Value = score[i-2] # 写入值ws.Range('B1:K16').CopyPicture() #将excel单元格B1:K16范围复制为图片ws.Paste(ws.Range('M1')) # 将从excel选区复制的图片移动到M1new_shape_name = 'ranjuan'#***excel.Selection.ShapeRange.Name = new_shape_name*** # 选择区域重命名excel.Selection.ShapeRange.Name = new_shape_namews.Shapes(new_shape_name).Copy() # 复制移动的图片Picture 1img = ImageGrab.grabclipboard() # 获取图片数据img.save(root_path + new_shape_name + '.png') # 图片另存为wb.SaveAs(root_path + 'copy.xlsx') # excel文件另存为copy.xlsxwb.Close()
新建excel需要填入初始数据,然后生成excel图表,之后才能使用python进行操作(将数据写入excel,柱状图发生变化,然后将指定的excel单元格区域复制为图片,并将图片进行保存),且此python程序依赖于电脑已安装excel软件, excel表格内容如下:

发表评论