2017-05-23 198 views
1

我想按照問題中所述使用Office.js API合併一些單元格。我使用visual studio在項目中創建了一個新的Web添加。我保持原樣生成的項目,並添加一個帶有點擊處理程序的按鈕來合併單元格,這裏是事件處理程序的代碼。使用office.js合併excel單元格

function mergingCells() { 
    Excel.run(function (ctx) { 
    var sheet = ctx.workbook.worksheets.getActiveWorksheet(); 
    var range = sheet.getRange('A1:D2'); 
    range.merge(false); 
    return ctx.sync().then(function() { 
    showNotification('Merging done', 
    'Merged range is ' + range.address); 
    }); 
    }).catch(errorHandler); 
} 

我得到的錯誤是:error

預期的結果:The expected result

+0

你能發佈一個完整的代碼片段嗎(我可以建議使用[ScriptLab](https://aka.ms/scriptlab))嗎?你有適當的錯誤處理來解決任何問題嗎? (另外,你在B3:D5上設置相對於原始範圍的值似乎很奇怪 - 你能畫一幅你期望的結果的圖片嗎?) –

+0

我使用的是visual studio模板,I沒有改變任何東西。我只是在html中添加一個按鈕,並在Home.js中添加一個單擊事件處理程序(在編輯的問題中列出)。 –

+0

這是腳本實驗室代碼片段:https://pastebin.com/aV4xTgeB –

回答

0

有在你的代碼中的錯誤在不加載在.then範圍內的地址中。但是如果我刪除了range.address,或者在同步之前調用range.load("address"),則代碼確實起作用。

我想知道的一件事:您使用的是哪個版本的Office?如果您使用的是Office 2016 RTM(不是基於訂閱的Office 365),則合併方法可能不可用(它只是ExcelApi 1.2的一部分,而不是RTM附帶的ExcelApi 1.1)。

你可以看到API設定特定的API屬於在智能感知:

IntelliSense

有關Office版本/口味更多信息請參見https://dev.office.com/docs/add-ins/develop/office-versions

有關Office JS版本控制和需求集的更多信息,請參閱https://dev.office.com/docs/add-ins/develop/office-js-versioning

不幸的是,Office 2016的RTM版本沒有區分API不可用和一些其他錯誤;所以他們都遇到了InvalidArgument(但不是以後的版本)。

+0

謝謝你回答我的問題。現在很清楚,我擁有office 2016的RTM版本不再適合office.js加載項,我需要去office 365。 –