2

我所做的:

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 的答案,因为它有效。但我没有使用它。问题是我收到很多“参数无效或丢失或格式不正确”。

我在Office 开发中心论坛中提出了同样的问题,并建议使用 Context.displayLanguageContext.contentLanguage来查找语言并使用不同的公式。但这不可能是普遍的。

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

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

在 P3 中:

=FORMULATEXT(P2)

加载 Excel 表后,您会得到正确语言的公式,我直接在表格中使用它。尽管公式中有错误,它还是被翻译了。这里是德语:

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

1 回答 1

1

Office.js Excel API(如之前的 VBA)旨在与语言/区域设置无关。也就是说,当您将公式设置为 时range.formulas,它旨在仅解释英语输入(这就是为什么我们也有range.formulasLocal,对应于特定于语言环境的公式版本)。因此,您描述的行为,即设置SUM和期望德语 Excel 将其解释为SUMME绝对应有的行为。

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

1)您可以尝试设置而不是通过表格值设置公式range.formulas吗?

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

于 2016-07-20T15:43:03.767 回答