按JavaScriptAPI强制计算一个单元格
Force the calculation of a cell by JavaScript API
我尝试 运行 来自工作簿 this page 的样本:
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));
}
});
当计算模式为automatic
时,G7
的结果为367
。相比之下,当计算模式为manual
时,G7
的结果为0
;这意味着公式 =G6-G5
不会重新计算。
有谁知道在manual
模式下是否有办法通过JavaScriptAPI强制计算G7
?
我们可以想象的一种方法是更改计算模式(automatic
),但是,calculationMode 在这里是只读的。
另一种方法是 运行 方法 calculate(calculationType: string),但它会重新计算 Excel 中所有当前打开的工作簿,这是相当昂贵的,并且可能不是我们想要的做。
我觉得如果不管解决方法如何都无法实现这样的基本操作,那将是非常受限的...
目前手动触发计算的可选方法是对整个工作簿使用 calculate() 方法。但是,它不应跨工作簿触发此操作,而只能触发此应用程序实例持有的工作簿。应用程序对象仅引用单个 Excel 实例 运行 加载项。
我尝试 运行 来自工作簿 this page 的样本:
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));
}
});
当计算模式为automatic
时,G7
的结果为367
。相比之下,当计算模式为manual
时,G7
的结果为0
;这意味着公式 =G6-G5
不会重新计算。
有谁知道在manual
模式下是否有办法通过JavaScriptAPI强制计算G7
?
我们可以想象的一种方法是更改计算模式(automatic
),但是,calculationMode 在这里是只读的。
另一种方法是 运行 方法 calculate(calculationType: string),但它会重新计算 Excel 中所有当前打开的工作簿,这是相当昂贵的,并且可能不是我们想要的做。
我觉得如果不管解决方法如何都无法实现这样的基本操作,那将是非常受限的...
目前手动触发计算的可选方法是对整个工作簿使用 calculate() 方法。但是,它不应跨工作簿触发此操作,而只能触发此应用程序实例持有的工作簿。应用程序对象仅引用单个 Excel 实例 运行 加载项。