为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过office.js Office.initialize获取excel的单元格编号和工作表

如何通过office.js Office.initialize获取excel的单元格编号和工作表

www说 2022-06-16 15:52:17
有时会收到附加图像错误在 excel 加载项中运行应用程序时出现以下错误。Office.js 尚未完全加载。您的应用程序必须调用“Office.onReady()”作为其加载序列的一部分(或设置“Office.initialize”函数)。如果您的应用具有此功能,请尝试重新加载此页面。我已经使用 Office.initialize 函数来获取我们单击 Excel 的单元格编号和工作表编号。但它不会被执行,如果我们在之后重新加载该页面,它将运行(Office.initialize)。如果我们通过“a”标签(a href)呈现该页面,它将运行良好,但使用 props.history.push 它将无法运行。Office.initialize = () => {    Office.context.document.addHandlerAsync(        Office.EventType.DocumentSelectionChanged,        () => {            Excel.run(ctx => {                const range = ctx.workbook.getSelectedRange();                range.load('address');                return ctx.sync().then(() => {                    const str = range.address;                    if (str) {                        const arr = str.split('!');                        if (arr[1] !== '1:1048576') {                            const cellNumber = arr[1];                            ExcelValue.cellValue = cellNumber;                        }                    }                });            });            Excel.run(context => {                const sheet = context.workbook.worksheets.getActiveWorksheet();                sheet.load('name');                return context.sync().then(() => {                    ExcelValue.sheetName = sheet.name;                    setSheet(ExcelValue);                });            }).catch(error => {                console.log(error.debugInfo);            });        },    );};
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

我可以通过在页面开头初始化 Office 并调用如下所示的函数来实现。


Office.initialize = function () {

    $(document).ready(function () {

        sheetPropertiesChanged();

     });

   };

   async function sheetPropertiesChanged() {    

    var rangeAddress;


    await Excel.run(async context => {

        const range = context.workbook.getSelectedRange();

        // Read the range address

        range.load("address");

        await context.sync();

        console.log(range.address);

        rangeAddress=range.address;

    }); 

}


查看完整回答
反对 回复 2022-06-16
?
喵喔喔

TA贡献1735条经验 获得超5个赞

您可以尝试Office.onReady(),因为Office.initialize()事件在 Office.js 初始化自身的内部过程结束时触发。它会在内部进程结束后立即触发。如果为事件分配处理程序的代码在事件触发后执行时间过长,则处理程序不会运行。

所以我们建议您使用Office.onReady()而不是Office.initialize(). 尽管Office.initialize()仍受支持,但Office.onReady()提供了更大的灵活性。

该文档可在https://docs.microsoft.com/en-us/office/dev/add-ins/develop/initialize-add-in找到


查看完整回答
反对 回复 2022-06-16
  • 2 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号