|
发表于 2020-9-13 22:48:37
|
显示全部楼层
本楼为最佳答案
可以写成这样,获取有数据的区域,确保全部内容都保存,这个其实就是VBA的操作,用这个库能做很多设置
- import win32com.client as win32
- from PIL import ImageGrab
- excel = win32.Dispatch('Excel.Application')
- wb = excel.Workbooks.Open(r'D:\python\test\test1.xlsx')
- ws = wb.WorkSheets('Sheet1')#打开工作簿
- #进行下面操作需确保excel内有数据
- address=ws.UsedRange.Address # 获取使用区域的区域范围
- address=address.replace(','')#对区域范围去除符号$
- print(address)
- start=address.split(':')[0]#获得左上角坐标
- end=address.split(':')[1]#获得右下角坐标
- ws.Range(f"{start}:{end}").CopyPicture()# 变成图片
- ws.Paste(ws.Range('K1')) #将图片黏贴在excel中
- # new_shape_name = 'shape_name_tmp' #通过名称定位图片
- # excel.Selection.ShapeRange.Name = new_shape_name #图片的重命名
- # ws.Shapes(new_shape_name).Copy() #图片至剪贴板
- ws.Shapes(ws.Shapes.Count).Copy() # 图片至剪贴板
- img = ImageGrab.grabclipboard()#从剪贴板获取图片
- img.save(r"D:\python\test\test.png")#图片保存
- wb.Save()#excel保存
- wb.Close()
复制代码 |
|