wps开发平台上接口文档说明:
Shapes.AddPicture:在绘图画布上添加一幅图片。返回一个 Shape 对象,该对象代表图片并将其添加至 CanvasShapes 集合。
语法
express.AddPicture(FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)
express 一个代表 Shapes 对象的变量。
参数
名称 必选/可选 数据类型 说明
FileName 必选 String 图片的路径和文件名。
LinkToFile 可选 Variant 如果该参数值为 True,则将图片链接到创建它的文件。如果该参数值为 False,则将图片作为该文件的独立副本。默认值为 False。
SaveWithDocument 可选 Variant 如果该参数值为 True,则将链接的图片与文档一起保存。默认值为 False。
Left 可选 Variant 新图片的左边缘相对于绘图画布的位置,以磅为单位。
Top 可选 Variant 新图片的上边缘相对于绘图画布的位置,以磅为单位。
Width 可选 Variant 图片的宽度,以磅为单位。
Height 可选 Variant 图片的高度,以磅为单位。
由于需要批量写入,wps的Application只打开关闭一次。
import win32com.client
# 写入图片
def write_image(file, image_file, arg, et=None):
# arg为单元格参数,如[A1:B2]
wb = et.Workbooks.Open(file)
sht = wb.Sheets(1)
# Left, 3.75, Top, 671.25, Height,31.5, Width,315
left = sht.Range(arg[0]).Left
top = sht.Range(arg[0]).Top
width = sht.Range(f'{arg[0]}:{arg[1]}').Width
height = sht.Range(f'{arg[0]}:{arg[1]}').Height
# print(sht.Range(arg[0]).Left)
# print(sht.Range(arg[0]).Top)
# print(sht.Range(f'{arg[0]}:{arg[1]}').Width)
# print(sht.Range(f'{arg[0]}:{arg[1]}').Height)
sht.Shapes.AddPicture(image_file, 1, 1, left, top, width, height)
wb.Save()
wb.Close()
运行实例:
file = r'd:\Documents\新建 XLSX 工作表.xlsx'
image_file = r'd:\Documents\1.png'
et = win32com.client.Dispatch('ket.Application')
et.Visible = False
# 在A1:B3区域插入图片,图片高度以单元格区域高度与宽度为准
write_image(file, image_file, [A1,B3], et=et)
et.Quit()
所对应的图片删除:
et = win32com.client.Dispatch('ket.Application')
et.Visible = False
# 此处file同上
wb = et.Workbooks.Open(file)
sht = wb.Sheets(1)
for shp in sht.Shapes:
a = shp.Height
# 指定所需删除图片的高度或者宽度,根据需求删除
if a < 50:
shp.Delete()
wb.Save()
wb.Close()
et.Quit()
比较遗憾的是我没有找到根据图片所在单元格区域进行删除,请各位朋友指点一下
wps接口文档