2016-12-01 83 views
1

下面的代碼正確過濾表格,但不會導致小計計算更新,因爲直接更改工作表中的過濾器時會發生更新。Office-js Excel API:filter.apply(...)不會觸發重新計算SUBTOTAL函數

是否有解決方法或其他API調用來觸發此操作?我查找了一個表或工作表recalc()函數,但找不到一個。

謝謝。

 Excel.run((ctx: Excel.RequestContext) => 
    { 
     var table = ctx.workbook.tables.getItem(tableIdOrName); 

     if (!keepPrevFilters) 
      table.clearFilters(); 

     var column = table.columns.getItemAt(colIdx); 
     column.filter.apply(filterCriteria); 

     return ctx.sync().then(() => 

回答

1

您可以強制3種類型重新計算與Application對象的calculate方法。

文檔:https://dev.office.com/reference/add-ins/excel/application

-Michael,PM爲Office插件

+0

感謝您的答覆。我嘗試了一些東西,這裏是我的發現: –

+0

'application.calculate(full)'和'application.calculate(recacluate)'不會導致重新計算。 'application.calculate(fullRebuild)'不會重新計算,但是這會重新計算所有打開的工作簿,並且會覆蓋用戶選項「Worbook Calculation」,因此如果用戶在調用此API時手動重新計算,仍然會重新計算。基於此,我不願意使用它。 –

+0

我認爲問題是'filter.apply(..)'不會將表或_something_標記爲髒,所以Excel不認爲它有任何重新計算。我得出這個結論是因爲1)我啓用了手動計算,2)然後調用一個'filter.apply(..)',然後3)按下F9,什麼也沒有發生。重複這些步驟並使用表中的表格應用過濾器,然後F9執行重新計算。 –