如何将excel转换为jpg?
在python中有简单的办法将excel的一个页面(一个sheet)的整体转换成一张图片吗?jpg或者任何图片格式都可以。没有。
不过将表打印成 PDF,然后转成 PNG 就可以了。 本帖最后由 疾风怪盗 于 2020-9-13 22:31 编辑
网上找到段代码可以实现,还在研究中。。。。。。。你自己研究下吧,
import win32com.client as win32
from PIL import ImageGrab
excel = win32.Dispatch('Excel.Application')
wb = excel.Workbooks.Open(r'D:\python\test\test1.xlsx')
# ws2 = wb.WorkSheets('Sheet1')
# ws2.Range("A1").Value = 6
ws = wb.WorkSheets('Sheet1')
ws.Range("A1:G19").CopyPicture()
ws.Paste(ws.Range('K1'))# 变成图片
# 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()
wb.Close()
可以写成这样,获取有数据的区域,确保全部内容都保存,这个其实就是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(':')#获得左上角坐标
end=address.split(':')#获得右下角坐标
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() 微信截个图不行吗?
页:
[1]