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 G7
367
. Wenn im Gegensatz dazu der Berechnungsmodus manual
ist, ist das Ergebnis G7
0
; 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 ...
Ermöglicht die Berechnung auf Zellenebene auf der Roadmap? – SoftTimur
Nicht dass ich diese spezifische Funktion kenne. Ich würde absolut empfehlen, es zu [UserVoice] (https://officespdev.uservoice.com/) hinzuzufügen. –
Es gibt bereits einen Uservoice-Thread für diesen ... – SoftTimur