亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過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 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號