2016-06-15 11 views
0

Ich versuche, eine Probe aus this page in einer Arbeitsmappe auszuführen:die Berechnung einer Zelle erzwingen, indem Sie JavaScript-API

Excel.run(function (ctx) { 
    var sheetName = "Sheet1"; 
    var rangeAddress = "F5:G7"; 
    var numberFormat = [[null, "d-mmm"], [null, "d-mmm"], [null, null]] 
    var values = [["Today", 42147], ["Tomorrow", "5/24"], ["Difference in days", null]]; 
    var formulas = [[null,null], [null,null], [null,"=G6-G5"]]; 
    var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress); 
    range.numberFormat = numberFormat; 
    range.values = values; 
    range.formulas= formulas; 
    range.load('text'); 
    return ctx.sync().then(function() { 
     console.log(range.text); 
    }); 
}).catch(function(error) { 
     console.log("Error: " + error); 
     if (error instanceof OfficeExtension.Error) { 
      console.log("Debug info: " + JSON.stringify(error.debugInfo)); 
     } 
}); 

Wenn der Berechnungsmodus automatic ist, ist das Ergebnis der G7367. Wenn im Gegensatz dazu der Berechnungsmodus manual ist, ist das Ergebnis G70; das bedeutet, dass die Formel =G6-G5 nicht erneut ausgewertet wird.

Weiß jemand, ob es eine Möglichkeit gibt, die Berechnung von G7 durch JavaScript API unter manual Modus zu erzwingen?

Eine Möglichkeit wäre, den Berechnungsmodus zu ändern (auf automatic), aber calculationMode ist hier schreibgeschützt.

Eine andere Möglichkeit wäre, die Methode calculate(calculationType: string) auszuführen, aber es berechnet alle derzeit geöffneten Arbeitsmappen in Excel neu, was ziemlich kostspielig ist und möglicherweise nicht das ist, was wir tun möchten.

Ich fühle es ganz würde zu beschränken, wenn eine solche grundlegenden Betrieb nicht möglich ist, unabhängig von Abhilfen ...

Antwort

0

Im Moment ist die Option Art und Weise manuell Berechnung auszulösen ist die calculate() -Methode gegen die gesamte zu verwenden Arbeitsmappe. Es sollte dies jedoch nicht in Arbeitsmappen auslösen, sondern nur in der Arbeitsmappe, die von dieser Anwendungsinstanz gehalten wird. Das Anwendungsobjekt verweist nur auf die einzelne Excel-Instanz, auf der das Add-In ausgeführt wird.

+0

Ermöglicht die Berechnung auf Zellenebene auf der Roadmap? – SoftTimur

+0

Nicht dass ich diese spezifische Funktion kenne. Ich würde absolut empfehlen, es zu [UserVoice] (https://officespdev.uservoice.com/) hinzuzufügen. –

+1

Es gibt bereits einen Uservoice-Thread für diesen ... – SoftTimur