2016-04-16 22 views
2

嘗試了下面的代碼,我從各種來源拼湊在一起,但它似乎並沒有工作。我是否需要查看每個單獨的財產並逐一分配?如何複製office.js中的範圍格式?

Excel.run(function (ctx) { 
     var worksheet = ctx.workbook.worksheets.getItem(worksheetName); 
     var range = worksheet.getUsedRange(); 
     range.load(["formulasLocal", "address", "format/*", "format/fill", "format/borders", "format/font"]); 

     var newWorksheet = ctx.workbook.worksheets.add(worksheetName + " -Copy"); 
     return ctx.sync().then(function() { 
      var newAddress = range.address.substring(range.address.indexOf("!") + 1); 
      newWorksheet.getRange(newAddress).values = range.formulasLocal; 
      newWorksheet.getRange(newAddress).format = range.format; 
     }).then(ctx.sync); 

回答

0

不幸的是,該方案目前尚不支持(雖然它在我們的積壓)。您可以將值,文本和公式作爲數組獲取,但不能使用格式化屬性。

當您訪問類似range.format.fill.color的東西時,如果範圍具有相同的格式,它將爲您返回一個值;如果範圍有多種顏色,則爲「空」,因此沒有單一的回答。因此,現在您需要瀏覽每個單元格(range.getCell(i,j))並將它們放入您自己的2D數組中,分別加載每個範圍的值,然後同步,然後使用該信息單獨應用格式化。有可能需要一個相當小的範圍內,但我們認識到,有更好的解決方案可能有更有針對性的API,

〜邁克爾Zlatkovsky,在Office擴展團隊開發,MSFT

+0

感謝您的回答。我探索新API的次數越多,結果就越不可用。沒有添加工作簿,沒有重複的工作表,甚至無法複製格式。這些都是非常基礎的操作,它們不會被包括在內,真是令人費解。 – Mr1159pm

+0

對於添加工作簿,這是一個已知的差距,但是以跨平臺的方式做一些棘手的事情。我們有一些想法,這當然是積壓的,但我承認它不在最頂層。你提到的另外兩個 - 應用格式化和複製工作表 - 正在積壓,因爲我們繼續擴大我們的API表面積。請隨時在https://officespdev.uservoice.com/forums/224641-general/category/163563-add-in-excel –

+1

上提出建議或對想法進行投票。我們有複製格式和/或重複工作表嗎? – sidnc86