最近做了一个项目,需要将RPA的操作过程截图形成证据链文档,因此研究了一下Excel批量插入图片的几种方法。部分方法学习自网络上的分享想必有前辈已经实现类似项目了,如果有更好的方案,希望各位多多指教~
Excel 前台操作
大家应该都会,稳定简单,就是效率低了点。具体方法不赘述。
VBA操作 - shapes.addPicture方法
此方法可以简单快速的往Excel里插入图片,还能很方便的调整长宽高。 官方提供的VB实例:
官方文档解释
有VBA基础的人使用此方法可以非常简洁快速。
在Uipath里有两个方法运行VBA,一个是Invoke VBA,一个是Excute Macro。区别是前者是独立运行VBA代码,可以通过txt导入代码;后者则是调用存在Excel scope指定Excel文件里的宏。
不过我的电脑上因为一些权限问题Uipath没能成功使用 Invoke VBA执行脚本(在信任中心勾选后仍然保持不允许VB project),所以后来使用了下面的第三种方法。
Python操作 - 第三方库XlsxWriter(或xlwt)
XlsxWriter中可以使用 实现此功能。除了可以指定插入图片的单元格位置外,还可以调整多种参数。
简单实例如下:
插入的图片支持png,jpg,jpeg,bmp等格式。
在运行Python脚本时发生了一点小插曲,Run Python Script时Python崩溃,后来换成Load Python Script + Python Method后解决此问题。此外还需要考虑权限问题,Python的这个方法在获取不到管理员权限的情况下能否生效尚未验证
以下是关于inser_image方法,来源网络的一些高级用法和解释:
参数:
row(int) - 单元格所在的行(索引从0开始计数)
col(int) - 单元格所在的列(索引从0开始计数)
image(string) - 图片文件名(如有需要含路径)
options(dict) - 可选的图片位置,缩放,url参数
insert_image()方法接受字典形式的可选参数来定位和缩放图片。可用的参数和它们的默认值有:
offset的值是以像素为单位的:
offset的值可以大于基础单元格的宽度与高度。如果想将两个及以上的图片相对于同一单元格对齐,这有时会很有用。xscale和yscale参数可以用于水平及垂直的缩放图片:
url参数可以为图片添加超链接/url,tip参数为含有超链接的图片提供可选的鼠标悬停时的提示信息:
image_data参数用于在io.BytesIO中添加内存中的字节流:
当使用imagedata参数时文件名必须传递到insertimage()因为这是Excel要求的。在前面的例子中文件名是从URL字符串中提取的。positioning参数可以用来控制图片对象的位置:
postioning有以下允许的值:1.移动和调整单元格的大小2.移动但不调整单元格的大小(默认)3.不移动或调整单元格的大小
注意:如果由于字体大小大于默认字体大小或者打开了文本换行而导致更改了默认行高,则图片的缩放可能会受到影响。如果它与插入的图像交叉,你应该使用set_row()方法明确的设定行高来避免此问题。BMP图片只向后兼容。由于BMP图片不能压缩,通常情况下最好避免使用BMP图片。如果使用BMP图片,必须是24bit、true color、bitmap的。
以下是来自网络的示例:向工作表中插入图片
以下是来自网络的示例:从URL或字节流向工作表插入一张图片
领取专属 10元无门槛券
私享最新 技术干货