Python之Excel chart另存为图片

大家好,好久没有更新博客了,这一段时间有点忙,公司接触到了大量的excel文件处理,现将自己在工作中积累的经验分享大家,供大家参考学习。
业务说明:这段时间我主要做的工作有:
  • 解析excel,将目标字段写入数据库(涉及加密、html转excel文件);
  • 数据库获取数据,写入excel,绘制图片,将图片另存为;
  • 将生成的图片和计算出的其他数据字段填补到word模板,形成报告文档;
需求一:解析excel,将目标字段写入数据库(涉及加密、html转excel文件)大家可以参考我以前的博客,里面有详细的说明介绍
接下来我将主要为大家介绍业务需求二,如何将数据写入excel,然后复制图片,将图片另存为;因为实际业务需求,找了好多资料博客,最终才算找到了一个好的解决办法,相信学习中的你也可能会遇到我这样的问题,当你遇到问题时,希望我的小分享对你有所帮助。

逻辑实现过程:

第一步:(新建一个data.xlsx文件,插入图片,作为我们的模板文件,数据字段如图)

第二步:将B2到B8单元格数据更改为【20,30,20,30,40,50,35】,可根据自己需求随意更改。

第三步:将D1:I12区域复制为图片,将图片移动到K1,效果如下:

第四步:图片直接另存为

第五步:将文件另存为copy.xlsx,文件夹数据

完整代码:(第一版)

import win32com.client as win32 # 打开excel文件
from PIL import ImageGrab   #用于获取复制的图片root_path = "XXX"excel = win32.Dispatch('Excel.Application') #获取Excel
wb = excel.Workbooks.Open(root_path+'data.xlsx') # 打开excel文件
ws = wb.Worksheets('Sheet1')        # 获取Sheet1score = [20,30,20,30,40,50,35]      # 需要写入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('D1:I12').CopyPicture()    # 复制D1:I12图片区域
ws.Paste(ws.Range('K1'))    # 将图片移动到K1
ws.Shapes('Picture 1').Copy()    # 复制移动的图片Picture 1
img = ImageGrab.grabclipboard()  # 获取图片数据
img.save(root_path+'Picture 1.png') # 图片另存为wb.SaveAs(root_path+'copy.xlsx') # excel文件另存为copy.xlsx
wb.Close()

特别说明:代码运行到ws.Shapes(‘Picture 1’).Copy()时可能会报未找到定义的图片错误,我一开始想着通过方法函数更改我们复制后的图片名称,然后再复制图片,但经过一番挣扎没有找到合适的方法,若有大神知道,留言告知,感激不尽。

但最终有一个解决窍门仅供参考,我们先注释掉如下几句代码

ws.Shapes('Picture 1').Copy()    # 复制移动的图片Picture 1
img = ImageGrab.grabclipboard()  # 获取图片数据
img.save(root_path+'Picture 1.png') # 图片另存为

接下来运行代码,运行成功后将会成功生成一个copy.xlsx文件,我们双击打开文件,鼠标点击我们复制成功的图片,左上角将会显示我们生成图片的名称即:Picture 1;名称不同的版本可能会不一样,所以在遇到错误时,可以根据此过程操作,更改图片名称即可。

完整代码:(终极版)

完善复制图片bug,只需将我们选中的区域重命名即可(感谢@vhills分享)

import win32com.client as win32 # 打开excel文件
from PIL import ImageGrab   #用于获取复制的图片root_path = "D:\\Luzaofa_Class\\"excel = win32.Dispatch('Excel.Application') #获取Excel
wb = excel.Workbooks.Open(root_path+'data.xlsx') # 打开excel文件
ws = wb.Worksheets('Sheet1')        # 获取Sheet1score = [20,30,20,30,40,50,35]      # 需要写入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('D1:I12').CopyPicture()    # 复制D1:I12图片区域
ws.Paste(ws.Range('K1'))    # 将图片移动到K1new_shape_name = 'luzaofa'
***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()

 感谢大家,后期我有时间再与大家分享Python操作Word模板文件形成报告文档,学习积累,与君共勉。

Python之Excel图片处理(将excel chart另存为图片)相关推荐

  1. python 读取图片颜色值生成excel像素画

    像素画: 需要用到的包: 进度条:progressbar pip install progressbar -i http://mirrors.aliyun.com/pypi/simple/ --tru ...

  2. pythonmat文件转excel,利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...

  3. 使用python实现EXCEL内容批量生成图片和批量拼接图片并按照指定目录存放

    一.背景介绍 1.1 任务概况 工作中遇到一个任务,要求如下: 1.批量制作900多个图片,每张图片内容不一样,不同的部分由EXCEL的内容决定: 2.图片制作完成后,需要按照EXCEL制定的名称命名 ...

  4. Python实现的解压缩软件及excel转图片工具源代码,基于pyqt5

    Python实现的解压缩软件源码及excel转图片工具源代码,基于pyqt5 1.GUI.py和GUI.ui:绘制界面相关 2. UnRAR64.dll和compress.py:压缩解压相关 3. e ...

  5. pythonmat文件转excel_利用python将图片转换成excel文档格式详解

    本文主要介绍了关于利用python将图片转换成excel文档的相关内容,编写了一小段Python代码,将图片转为了Excel,纯属娱乐,下面这篇文章主要给大家介绍了关于利用python将图片转换成ex ...

  6. python读取图片文字为表格_利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...

  7. python将excel转换成图片格式_利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...

  8. python日常实用技能:利用python将图片转换成excel文档格式

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详 ...

  9. Python将图片插入到Excel中

    效果图: 安装:命令:pip install XlsxWriter (或者 easy_install XlsxWriter) 在下载的过程中慢的话,可以尝试其中一个,速度会比单纯的pip快10倍不止. ...

最新文章

  1. javascript中new Date浏览器兼容性处理
  2. thinkphp概述
  3. git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区
  4. jmeter吞吐量_深入理解Jmeter常用定时器
  5. stream of java_Java 8 新特性-Stream更优雅的处理集合入门
  6. 真正的免费云时代来临,免费1T全能空间
  7. 服务器驱动硬盘故障修复,如何修复崩溃的硬盘驱动器
  8. echarts+echarts-gl vue2制作3D地图+下钻功能+标记点功能,解决dblclick事件失效问题,解决地图下钻后边框不更新保留问题
  9. 字符串转utf8编码
  10. AutoCAD .NET 二次开发实例:批量文本查找替换
  11. Java网课基础笔记(7)19-07-19
  12. moment.js多语言列表
  13. axios请求拦截器 和 响应拦截器
  14. 前端--HTML入门
  15. java模拟而一个电话本操作
  16. 【Verifying transaction: failed】
  17. java中什么是声明抽象_java中什么是抽象类?抽象类的声明
  18. Mysql主从配置,亲手搭建,保证可用!
  19. mysql show 命令详解_MYSQL show 命令详解
  20. 第三天(Qos网络服务质量)

热门文章

  1. java ext.dirs_关于-Djava.ext.dirs使用问题
  2. 余世维 - 老板首先要诚实
  3. 移动设备管理软件优劣,南京烽火星空来判别
  4. VsCode中运行HTML页面时出现乱码
  5. Word如何取消打印前自动更新域
  6. Jsp的四种作用域范围
  7. 使用QT实现Mjpeg-streamer的客户端,采用单独的线程进行视频图片的获取
  8. 调试多线程 查死锁的bug gcore命令 gdb对多线程的调试 gcore pstack 调试常用命令...
  9. 从金融IT公司工作10年后转到银行的工作体会
  10. 均值不等式中考_数学不等式解题技巧