鱼C论坛

 找回密码
 立即注册
查看: 1877|回复: 4

[已解决]如何将excel转换为jpg?

[复制链接]
发表于 2020-9-13 21:44:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在python中有简单的办法将excel的一个页面(一个sheet)的整体转换成一张图片吗?jpg或者任何图片格式都可以。
最佳答案
2020-9-13 22:48:37
可以写成这样,获取有数据的区域,确保全部内容都保存,这个其实就是VBA的操作,用这个库能做很多设置
  1. import win32com.client as win32
  2. from PIL import ImageGrab

  3. excel = win32.Dispatch('Excel.Application')
  4. wb = excel.Workbooks.Open(r'D:\python\test\test1.xlsx')

  5. ws = wb.WorkSheets('Sheet1')#打开工作簿
  6. #进行下面操作需确保excel内有数据
  7. address=ws.UsedRange.Address # 获取使用区域的区域范围
  8. address=address.replace(','')#对区域范围去除符号$
  9. print(address)
  10. start=address.split(':')[0]#获得左上角坐标
  11. end=address.split(':')[1]#获得右下角坐标
  12. ws.Range(f"{start}:{end}").CopyPicture()# 变成图片
  13. ws.Paste(ws.Range('K1'))  #将图片黏贴在excel中

  14. # new_shape_name = 'shape_name_tmp' #通过名称定位图片
  15. # excel.Selection.ShapeRange.Name = new_shape_name #图片的重命名
  16. # ws.Shapes(new_shape_name).Copy() #图片至剪贴板
  17. ws.Shapes(ws.Shapes.Count).Copy()  # 图片至剪贴板
  18. img = ImageGrab.grabclipboard()#从剪贴板获取图片
  19. img.save(r"D:\python\test\test.png")#图片保存
  20. wb.Save()#excel保存
  21. wb.Close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-13 22:14:28 | 显示全部楼层
没有。

不过将表打印成 PDF,然后转成 PNG 就可以了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-13 22:27:45 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-13 22:31 编辑

网上找到段代码可以实现,还在研究中。。。。。。。你自己研究下吧,
  1. import win32com.client as win32
  2. from PIL import ImageGrab

  3. excel = win32.Dispatch('Excel.Application')
  4. wb = excel.Workbooks.Open(r'D:\python\test\test1.xlsx')

  5. # ws2 = wb.WorkSheets('Sheet1')
  6. # ws2.Range("A1").Value = 6

  7. ws = wb.WorkSheets('Sheet1')
  8. ws.Range("A1:G19").CopyPicture()
  9. ws.Paste(ws.Range('K1'))  # 变成图片

  10. # new_shape_name = 'shape_name_tmp' #通过名称定位图片
  11. # excel.Selection.ShapeRange.Name = new_shape_name #图片的重命名
  12. # ws.Shapes(new_shape_name).Copy() #图片至剪贴板
  13. ws.Shapes(ws.Shapes.Count).Copy()  # 图片至剪贴板
  14. img = ImageGrab.grabclipboard()
  15. img.save(r"D:\python\test\test.png")
  16. wb.Save()
  17. wb.Close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-13 22:48:37 | 显示全部楼层    本楼为最佳答案   
可以写成这样,获取有数据的区域,确保全部内容都保存,这个其实就是VBA的操作,用这个库能做很多设置
  1. import win32com.client as win32
  2. from PIL import ImageGrab

  3. excel = win32.Dispatch('Excel.Application')
  4. wb = excel.Workbooks.Open(r'D:\python\test\test1.xlsx')

  5. ws = wb.WorkSheets('Sheet1')#打开工作簿
  6. #进行下面操作需确保excel内有数据
  7. address=ws.UsedRange.Address # 获取使用区域的区域范围
  8. address=address.replace(','')#对区域范围去除符号$
  9. print(address)
  10. start=address.split(':')[0]#获得左上角坐标
  11. end=address.split(':')[1]#获得右下角坐标
  12. ws.Range(f"{start}:{end}").CopyPicture()# 变成图片
  13. ws.Paste(ws.Range('K1'))  #将图片黏贴在excel中

  14. # new_shape_name = 'shape_name_tmp' #通过名称定位图片
  15. # excel.Selection.ShapeRange.Name = new_shape_name #图片的重命名
  16. # ws.Shapes(new_shape_name).Copy() #图片至剪贴板
  17. ws.Shapes(ws.Shapes.Count).Copy()  # 图片至剪贴板
  18. img = ImageGrab.grabclipboard()#从剪贴板获取图片
  19. img.save(r"D:\python\test\test.png")#图片保存
  20. wb.Save()#excel保存
  21. wb.Close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-14 07:46:15 | 显示全部楼层
微信截个图不行吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 04:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表