如何从 Javascript Api 到 Excel 编写一个独立于用户语言的公式?

How to write a formula from Javascript Api in Excel, that is independent from the user language?

我的工作:

var myTable = new Office.TableData();
.....
var y = [];
y.push(...);
.....
y.push('=SUM(Test[@[364]:[0]])/365');
y.push(...);
.....
myTable.rows.push(y);

以后

binding.addRowsAsync(myTable.rows, function (addResult){....});

现在一切正常,如果用户在 Excel 中使用英语。但是如果他使用德语,就会出现“#NAME?”,因为在德语中 SUM 必须是 SUMME。 如何从 Javascript Api 编写一个独立于用户语言的公式?

或者问题可能是:我可以用 Excel 以德语为标准语言(在单元格中)写一个英文公式吗?

编辑:

我会标记 Michael Zlatkovsky 的回答,因为它有效。但我没有使用它。问题是我得到了很多 "The argument is invalid or missing or has an incorrect format."

我在 Office Dev Center forum and the suggestion there was to use Context.displayLanguage or Context.contentLanguage 中问过相同的问题以查找语言和使用不同的公式。但这不可能是通用的。

我现在使用的是在一些sheet和一些单元格(隐藏)中编写公式,然后在其他单元格中使用 FORMULATEXT 以获得正确的公式。例如,如果在单元格 P2 中是这个公式:

=COUNTIF(Test[@[364]:[0]];"<=0")

在 P3 中:

=FORMULATEXT(P2)

加载 excel sheet 后,您会得到正确语言的公式,我直接在 table 中使用它。尽管公式中有错误,但它已被翻译。这里是德语:

=ZÄHLENWENN(Test[@[364]:[0]];"<=0")

Office.js Excel API(如之前的 VBA)是 language/locale 不可知论者。也就是说,当您将公式设置为 range.formulas 时,它被设计为仅解释英语输入(这就是为什么我们也有 range.formulasLocal,对应于公式的区域设置特定版本)。因此,您描述的设置 SUM 并期望德语 Excel 将其解释为 SUMME 的行为绝对是应该的。

几个问题可以帮助我们对此进行调查:

1) 除了通过 table 值设置公式,您可以尝试设置 range.formulas 吗?

2) 如果可行,设置range.values = yourFormula 怎么样?我认为这应该像 #1 一样工作,但只是想确定一下。