【BUG】关于PY脚本编辑器操作图片,图表的API漏洞

如题,关于PY脚本编辑器操作图片,图表的API漏洞

希望尽早修复吧,整合python让WPS更强大了,但是BUG让python落地成空,一写点代码就搞人心态,希望整好PY脚本编辑器,我都要已经想好我的项目今后的方向了,可惜PY脚本拉跨。。。

首先用的是WPS25222_64位,25225_32位,都实验过了。

经过几天摸索,发现py脚本编辑器的API根本有的不能用或者有问题,我参考的官方文档如下:

Python✖表格 | Python文档

太累人了,代码官方拿去测试吧,直接测试,问题注释上都有,不用源文件,用不到。

希望搞好这些API。

link = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'
图片base64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACH1BMVEUAAAA9kP8mpv9Fv/8QT94TXeQAfv8trP0xr/0VUdoAcv8LgPs1sf4AgP4QUuURTuEVl/ksq/wAg/84tf4NUt80sf0bnPsPUuAAYfsAgP4UTtYAY/8GXPQRkv1Jxv8AZP86tv9Bvv9Gv/9Atv8KiPUOVesAZ+wbS8wUl/kjo/sAYv8PVekjovxBu/8AY/8trPxCu/8AW/AAcvAxsP0npvsYTdElo/oQT9o+uP8AYv8KVOIHdugAYfwAfPwbfe49uf4XmfkcdOopo/oAYv86tf4AYf8TT9cZaeYVTdUJVOUcnvsAYv8Agv9Iwv8AYv9Jwf8bSs0gofoAY/8Ag/9Gv/8en/oAYf9Fv/8AWuQZS80AdO5BvP8AYv9DvP8Umfo9uv8LVOUAgf8amfk/uf8AY/8Ag/8Ahf8TUdgVT9UNWOknov8trPwxr/wmpvspqfs1sv0io/s5tf0AgP8bnfoMV+4AYPoAYv8AYf4AYfwAe/sen/oAd/gAXvYAff0LW/MLWfEOUN0PT9oSTtZAu/49uP0qqfweoPoXmvkAdPUAXPIAcfEKUuIWTNIXS88KXPYAWusOVeoPVOkPUuYQUeQQT+IMUeAUTdMZSs09uP4Aa+kAWOgAaeQIVOQIU+QAV+MRTd8STd0RTtgSl/kAW+8NWO8Abu0AbuwBZNsAg/8AYPwAc/MIVecAZuEAVeAAWt8AZN0JgvAIfOsJV+sTVuIAU9qil9AQAAAAa3RSTlMAAwb++A3+bkkkGxL8+Pf36tnTubCYjol4dmVjRjEvLysZFA7+/Pv6+fj39/b19fPw8O/u7Ovq6Ofn5+Xj4uDa2trZ1dPS0s/Ny7+9vLi4trapoqGgoJ2XkI+KgoJycGRhX1BNS0pHQj06IcCB3jkAAAIBSURBVDjLdZCHctpAFEWfCMU1ce8tTu+99957770nJFGwkE1sgyMTAginYbkAIQSD494+0G+ltTAacWZnNLt7dO/Og3Tqzl2og8wsvroAudEI+iy5s+6LzMZ7Bp1r5sFOQegRenAJwoEnoCXr6Mc0ihvSrhuK32vJK21Mva00760OWyz0KZYNbzJQmKXUF1o7rZ24rGngweETIGOwbH2nw/ZDUaM6grJVHzSs3R+NoqDy+lKLuwWX2618r03/QRalhNzbewo+qZyuZX4TVMFQubm3f3xy5VeZg49xsL8IC+mUH+1zeLyJ3pHkRCwWK7hvIGc/CYrwvIhtbXZ4hgYwJLm0LFf56QdhDRAq8wdZMypD3kT/SBJo6nfCMmWTc2WQlUO8GDIn2GSAUnuWGERJpIS4LR4HlWdFNITua9pl5s3h5vJ81tzscAAhuyTc3kZQ51CxqasvMmDGENyZyo1BX2iqLRAI0L7qvU2fv6Ex5mVbgana4XIGfb7QsI0KNcc4O4/Gv67I6Jjn5cmOvy4nGuFwaFipqFjN2YlBQkZn/N0dxAhiSfjUKzqHyxwq/0lIX0T0d6OAGb7dD0Gl/gzH8UqN6JcNp7HcBPN5esTO8U2oSCIpcZVkgwamepedxxpJROP4C9DBdHc9vlWSxG1VDOiTc53jpRW3TJCZ+vMXNeWzDz4DoNZyqecAAAAASUVORK5CYII='
sht = ActiveSheet
rag = sht.Range('e1:f11')

for i in sht.ChartObjects():
  if i : i.Delete()
for i in sht.Shapes:
  if i : i.Delete()

# # 以下这句可以在图表中植入网络图片做背景 但是运行后图表立马消失退回到本地表格 只有本地表格可查看!
# sht.ChartObjects('图表 1').Chart.PlotArea.Format.Fill.UserPicture(link)


# # 以下代码事实上可以插入图片 只是宽高都是0! 请问为什么??
# pic = sht.Shapes.AddPicture( 图片base64, 0, 0, rag.Range('a1').Width, rag.Range('a1').Height, Range('a1:d11').Width, Range('a1:d11').Height)
# pic.Left = rag.Range('a1').Width
# pic.Top = rag.Range('a1').Height
# pic.Width = Range('a1:d11').Width
# pic.Height = Range('a1:d11').Height


# 以下第一句无效 第二局返回错误 第三句无效
# pic = sht.Shapes.AddPicture( {图片base64, 0, 0, rag.Range('a1').Width, rag.Range('a1').Height, Range('a1:d11').Width, Range('a1:d11').Height})
# pic = sht.Shapes.AddPicture({
#         FileName: 图片base64,
#         LinkToFile: 0,
#         SaveWithDocument: 0,
#         Left: 100,
#         Top: 100,
#         Width: 400,
#         Height: 300
#       })
# pic = sht.Shapes.AddPicture({
#         'FileName': 图片base64,
#         'LinkToFile': 0,
#         'SaveWithDocument': 0,
#         'Left': 100,
#         'Top': 100,
#         'Width': 400,
#         'Height': 300
#       })


# # 方式1:以下方式创建的图表有BUG 经过研究发现是PlotArea的宽度高度无法在PY里面设置 但是在airScript是能设置的!-------
# # cha = sht.Shapes.AddChart2(-1, xlLine, 100, 100, 150, 150)# 无反应 应该不支持这个方法
# cha = sht.ChartObjects().Add(rag.Range('a1').Width, rag.Range('a1').Height, Range('a1:d11').Width, Range('a1:d11').Height)
# cha.Left = rag.Range('a1').Width      # 必须设置第二遍才能成功
# cha.Top = rag.Range('a1').Height      # 必须设置第二遍才能成功
# cha.Width = Range('a1:d11').Width     # 必须设置第二遍才能成功
# cha.Height = Range('a1:d11').Height   # 必须设置第二遍才能成功
# cha.Visible = True
# # 以下两句SetSourceData,ChartWizard是没有返回对象的
# # cha.Chart.SetSourceData(rag, xlColumns)       # 双击图表区域有设置窗口 设置窗口显示数据区域确实设置成功了
# cha.Chart.ChartWizard(rag, xlLine, xlColumns) # 双击图表区域有设置窗口 设置窗口显示数据区域确实设置成功了
# chaArea = cha.Chart.ChartArea
# chaArea.Width = 400
# chaArea.Height = 300
# # 以下属性设置失败 !
# chaPlot = cha.Chart.PlotArea
# chaPlot.Width = 380
# chaPlot.Height = 280
# chaPlot.InsideWidth = 350
# chaPlot.InsideHeight = 250


# # 方式2:官方示例代码 返回本地表能看到创建的图表 但是在线表格看不见 奇怪
# # 官方文档:https://airsheet.wps.cn/pydocs/et_api/excel/workbook/ChartObjects/ChartObjects%20%E5%AF%B9%E8%B1%A1.html#%E8%AF%B4%E6%98%8E
# # 官方示例:在工作表 Sheet1 中新建一个内嵌图表,然后以折线图形式添加单元格 A1:A20 中的数据
# cha = sht.ChartObjects().Add(30, 30, 400, 300)
# cha.Activate()
# cha.Select()
# cha.Chart.ChartWizard(rag, xlLine)
# cha.Left = 30
# cha.Top = 30
# cha.Width = 400
# cha.Height = 300
# cha.Visible = True
# cha.Left = 30
# cha.Top = 30
# cha.Width = 400
# cha.Height = 300
# cha.Visible = True
# cha.Activate()
# cha.Select()
# print(f'ChartObjects:{cha.Name},可见否:{cha.Visible}')
# print(f'ChartObjects:{cha.Chart.Name},可见否:{cha.Chart.Visible}')


# --------
for i in sht.ChartObjects(): printObjInfo(i)
for i in sht.Shapes: printObjInfo(i)

超字数了,自定义输出函数截图如下:

广西
浏览 542
收藏
5
分享
5 +1
8
+1
全部评论 8
 
卢贵键
卢贵键

@金山办公

这个没太看懂呢?能否上个动图
· 广东省
回复
λ公式探索者
马上
· 广西
回复
 
卢贵键
卢贵键

@金山办公

Shapes.AddPicture的第一参数是文件路径,用于插入本地图片文件的。不支持插入二进制流
· 广东省
回复
λ公式探索者
事实上可以插入,只是宽高属性都是0,怎么设置都不行。返回到本地表格,在【选择窗格】可以看到并选择,拖动大小就看到了呢。所以应该不是不支持,而是宽高设置不了。但是,但是,返回本地表格,鼠标一拖(手动设置了宽高)就看到了。。。。
· 广西
回复
 
大兵
打卡
· 甘肃省
回复
 
λ公式探索者
我之所以这样测试,写代码,是想着直接在PY里面插入返回的数据分析图,一步到位,不想再用“自动化流程”触发一次airScript,绕那么多弯子,本来官方自己就说了,PY脚本支持WPSAPI的
· 广西
回复