

发布于 2025-07-26 13:282266浏览WPS 在线表格提供了丰富的 JavaScript API,可用于实现自动化操作、数据处理和定制功能。结合操作经验,分享以下实践和技巧
参考文档:WPS在线表格 api文档
目前官方市场提供了部分操作指令,针对单元格嵌入、超链接获取等未添加的指令可以自己按需拓展

举个栗子:在指定单元格插入图片,
读取单元格超链接
在python模块中进行js注入和调用
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep,web
from .import package
from .package import variables as glv
import base64
import os
import json
def main(args):
pass
def initialize_web_environment(web_page):
# 页面初始化,js注入
code = """
function (element, input) {
(function() {
window.updateImageInCell = async function(sheetName, rowIndex, columnIndex, base64Image) {
const workbook = getActiveWorkbook();
await workbook.Sheets.Item(sheetName).Cells(rowIndex, columnIndex).InsertImage(base64Image);
};
window.getHyperlink = async function(sheetName, rowIndex, columnIndex) {
const workbook = getActiveWorkbook();
const hyperlink = await workbook.Sheets.Item(sheetName).Cells(rowIndex, columnIndex).Hyperlinks.Item(1).Address;
return hyperlink;
};
function getActiveWorkbook() {
return WPSOpenApi.Application.ActiveWorkbook;
}
})();
}
"""
web_page.execute_javascript(code, execution_world="MAIN")
return web_page
def updateImageInCell(web_page,shtName,row,column,image_path):
#调用函数插入图片 , 这里的shtName指定无效,API文档未指出,激活sht页后在进行图片插入
def convert_file_to_base64(file_path):
"""读取文件内容并转换为 Base64 编码字符串"""
try:
with open(file_path, 'rb') as file:
content = file.read()
encoded_bytes = base64.b64encode(content)
encoded_string = encoded_bytes.decode('ascii')
return encoded_string
except FileNotFoundError:
print(f"错误: 文件 '{file_path}' 不存在")
return None
except Exception as e:
print(f"错误: 无法读取文件 - {str(e)}")
return None
base64_image_data = convert_file_to_base64(image_path)
code = """
function() {{
return updateImageInCell({sheetName},{rowIndex},{columnIndex},{base64Image})
}}
""".format(sheetName=json.dumps(shtName),
rowIndex=json.dumps(row),
columnIndex=json.dumps(column),
base64Image=json.dumps("data:image/png;base64," + base64_image_data))
web_page.execute_javascript(code, execution_world="MAIN")
def getHyperlink(web_page,shtName,row,column):
#调用函数获取 超链接
code = """
function() {{
return getHyperlink({sheetName},{rowIndex},{columnIndex})
}}
""".format(sheetName=json.dumps(shtName),
rowIndex=json.dumps(row),
columnIndex=json.dumps(column))
return web_page.execute_javascript(code, execution_world="MAIN")
可视化调用模块
理论上其他api接口也可以使用上述方式和方法进行调用。