使用displayDialogAsync创建对话框时,对话框中不能直接调用诸如window.Excel.run等
得通过window.Office.context.ui.messageParent(‘xxx’)的方式将数据发送给主窗口,主窗口接受后,再调用window.Excel.run等方法
示例如下
//创建新对话框
const url = 'https://www.w3cways.com' //调试时必须使用 https的域名
window.Office.context.ui.displayDialogAsync(
url,
{ width: 40, height: 40 }, //百分比
(asyncResult: any) => {
dialog = asyncResult.value
dialog.addEventHandler(
window.Office.EventType.DialogMessageReceived, //监听事件
(val: any) => {
const { message } = val //对话框传递过来的数据 这里为 XXX
window.Excel.run(async function (context: any) {
//TODO
return context.sync()
})
},
)
},
)
打开的对话框中发送数据给主窗口
window.Office.context.ui.messageParent('XXX') //发送消息给主窗口
Web前端(W3Cways.com) - Web前端学习之路