鱼C论坛

 找回密码
 立即注册
查看: 2524|回复: 3

openpyxl可以将excel指定单元格截图保存吗?

[复制链接]
发表于 2022-5-31 22:27:58 | 显示全部楼层 |阅读模式
20鱼币
openpyxl可以将excel指定单元格截图保存吗?
如果不能的话,大家推荐哪个库呢?
需要在linux下运行运行,最好是可以说下用到库里面的那个函数。一点鱼币不成心意,谢谢!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-1 09:26:23 | 显示全部楼层
你要另外导入个截图模块吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-1 11:34:19 | 显示全部楼层
openpyxl里面不是所有属性都有,建议直接用Excel  vba编写,单元格复制,活动表的图片黏贴方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-6-25 22:41:23 | 显示全部楼层
本帖最后由 lizhiyong_11 于 2022-6-25 22:53 编辑

我在网上找到了两种第三方库可以实现我的目标,但是我还没有验证,发出来给大家分享一下
方法一
  1. # Excel xlwings制作图片
  2. def xlwingsPic(excel_path, name):
  3.     print('分析数据:'+name)
  4.     app = xw.App(visible=True, add_book=False)
  5.     # 1. 使用 xlwings 的 读取 path 文件 启动
  6.     wb = app.books.open(excel_path)
  7.     # 2. 读取 sheet
  8.     sht = wb.sheets[0]
  9.     # 3. 获取 行与列
  10.     nrow = sht.used_range.last_cell.row
  11.     ncol = sht.used_range.last_cell.column
  12.     # 自动调整单元格大小。
  13.     sht.autofit()
  14.     # 合并‘合计’单元格
  15.     Brow = 'C' + str(nrow)
  16.     Hrow = 'I' + str(nrow)
  17.     mer = Brow+':'+Hrow
  18.     sht.range(mer).api.Merge()
  19.     heji = sht.range(Hrow)

  20.     # 4. 获取有内容的 range
  21.     range_val = sht.range(
  22.         (1, 3),  # 获取 第一行 第一列
  23.         (nrow, ncol-1)  # 获取 第 nrow 行 第 ncol 列
  24.     )
  25.     # 设置背景色
  26.     range_val.color = (255, 255, 255)
  27.     # 设置单元格的对齐方式
  28.     range_val.api.HorizontalAlignment = -4108    # -4108 水平居中。 -4131 靠左,-4152 靠右。
  29.     # range_val.api.VerticalAlignment = -4130      # -4108 垂直居中(默认)。 -4160 靠上,-4107 靠下, -4130 自动换行对齐。

  30.     # ‘合计’右对齐
  31.     heji.api.HorizontalAlignment = -4152

  32.     # Borders(9) 底部边框,LineStyle = 1 直线。2 虚线。 5 双点划线。4 点划线。
  33.     range_val.api.Borders(9).LineStyle = 1
  34.     range_val.api.Borders(9).Weight = 2               # 设置边框粗细。

  35.     # Borders(7) 左边框
  36.     range_val.api.Borders(7).LineStyle = 1
  37.     range_val.api.Borders(7).Weight = 2

  38.     # Borders(8) 顶部框
  39.     range_val.api.Borders(8).LineStyle = 1
  40.     range_val.api.Borders(8).Weight = 2

  41.     # Borders(10) 右边框
  42.     range_val.api.Borders(10).LineStyle = 1
  43.     range_val.api.Borders(8).Weight = 2

  44.     # 区域的单元格,内部边框
  45.     # # Borders(11) 内部垂直边线。
  46.     range_val.api.Borders(11).LineStyle = 1
  47.     range_val.api.Borders(11).Weight = 2
  48.     # # Borders(12) 内部水平边线。
  49.     range_val.api.Borders(12).LineStyle = 1
  50.     range_val.api.Borders(12).Weight = 2

  51.     # 5. 复制图片区域
  52.     range_val.api.CopyPicture()
  53.     time.sleep(0.5)
  54.     # 6. 粘贴
  55.     sht.api.Paste()
  56.     pic = sht.pictures[0]  # 当前图片
  57.     pic.api.Copy()

  58.     time.sleep(0.5)
  59.     # 获取剪贴板的图片数据
  60.     im = ImageGrab.grabclipboard()
  61.     time.sleep(5)
  62.     riqi = str(time.strftime("%Y-%m-%d", time.localtime()))
  63.     ImageAdd = 'D:\\AutoSend\\Image\\' + str(riqi + name) + '.png'

  64.     # 判断图片是否正确
  65.     if isinstance(im, Image.Image):
  66.         # print ("Image: size : %s, mode: %s" % (im.size, im.mode))
  67.         im.save(ImageAdd)
  68.     elif im:
  69.         for filename in im:
  70.             try:
  71.                 print("filename: %s" % filename)
  72.                 im = Image.open(filename)
  73.             except IOError:
  74.                 pass  # ignore this file
  75.             else:
  76.                 print("ImageList: size : %s, mode: %s") % (im.size, im.mode)
  77.     else:
  78.         print("clipboard is empty.")

  79.     pic.delete()  # 删除sheet上的图片

  80.     wb.close()  # 不保存,直接关闭
  81.     app.quit()  # 退出
  82.     # 返回图片保存地址
  83.     return ImageAdd
复制代码

方法二  用excel2img 模块

最后问一下,自己百度出来的第三方模块的使用说明去哪里找呀?

这个问题自问自答一下把,应该去pypi上或者github上找找看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 04:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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