python导出excel中所有图片(写入excel数据)
利用python3.7导出excel图片的教程网上很多都是搞解压那套,而且基本是复制的一模一样的教程,本例给出的图片导出源码转载自csdn。
from PIL import ImageGrab import 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 = True wb = excel.Workbooks.Open(root_path+'商品示例.xlsx') # 打开excel文件 ws = wb.Worksheets('Sheet1') # 获取Sheet1 score = [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选区复制的图片移动到M1 new_shape_name = 'ranjuan' #***excel.Selection.ShapeRange.Name = new_shape_name*** # 选择区域重命名 excel.Selection.ShapeRange.Name = new_shape_name ws.Shapes(new_shape_name).Copy() # 复制移动的图片Picture 1 img = ImageGrab.grabclipboard() # 获取图片数据 img.save(root_path + new_shape_name + '.png') # 图片另存为 wb.SaveAs(root_path + 'copy.xlsx') # excel文件另存为copy.xlsx wb.Close()
新建excel需要填入初始数据,然后生成excel图表,之后才能使用python进行操作(将数据写入excel,柱状图发生变化,然后将指定的excel单元格区域复制为图片,并将图片进行保存),且此python程序依赖于电脑已安装excel软件, excel表格内容如下:
基于互联网精神,在注明出处的前提下本站文章可自由转载!
本文链接:https://ranjuan.cn/python-excel-savepic/
赞赏
微信赞赏支付宝赞赏
发表评论