工作需要整理一些信息,写的小脚本
本文记录一下以后可能会用到的东西,随用随添加
#打开文件&切换工作表
* 此处用到的库为 xlwings
需要注意的只是文件路径和工作表名都为String格式
1 | import xlwings as xw |
#添加图片到单元格
翻一翻官方的文档很容易就能找到要用的函数。实际上如果有耐心翻文档或者在文档中搜一搜相关的关键词,我这篇文章就不用看了。
1 | add(image, link_to_file=False, save_with_document=True, left=None, top=None, width=None, height=None, name=None, update=False, scale=None, format=None, anchor=None, export_options=None) |
#获取单元格
从上文中的函数信息可以很直观地看出向工作表插入图片时需要左端和顶端位置
首先说明一件事,在Excel工作表中,图片与单元格及其内部的文字不在同一层上,类似于Photoshop中位于两个图层。所以虽然说“插入图片”,其实应该叫做“把图片贴”在单元格的位置上
那么问题就只剩下找到单元格的位置了
1 | cell = sht.range("B1:F2") |
一件比较重要的事情,如果目标单元格是个合并后的单元格,在sht.range()
方法中要列出整个单元格的范围,而不是像Excel中写函数时只写出左上角单元格名称 -> link
#调整尺寸
涉及到插入图片必然涉及到尺寸匹配
可以直接无视原图片比例直接暴力将图片拉到目标单元格的尺寸,也可以等比例放大/缩小图片使其能够进入单元格中。不管怎么做,图片和单元格的尺寸都需要先获取到
1 | cellW, cellH = cell.width, cell.height |
图片的尺寸获取方法就太多了,这里不赘述
#插入文字
与插入图片相比,文字插入可谓是相当简单了
1 | sht.range(f"{cell_range}").value = f"{your_text}" |
大功告成!
#收尾工作
操作之后不要忘了保存及关闭Excel文件,或者只保存也可以,方便检查脚本运行结果是否符合要求
1 | wb.save() |