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

时间:2016-07-20 13:12:42

标签: excel office-addins office-js excel-2016 javascript-api-for-office

我的所作所为:

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 Dev Center forum中提出了同样的问题,并建议使用Context.displayLanguageContext.contentLanguage来查找语言并使用不同的公式。但这不是普遍的。

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

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

并在P3中:

=FORMULATEXT(P2)

你加载excel表后得到的,公式用正确的语言,我直接在表中使用它。尽管公式中存在错误,但它仍被翻译。这里用德语:

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

1 个答案:

答案 0 :(得分:1)

Office.js Excel API(如之前的VBA)意味着语言/语言环境无关。也就是说,当您将公式设置为range.formulas时,它的设计目的只是解释ENGLISH输入(这就是我们也有range.formulasLocal的原因,对应于公式的特定于语言环境的版本)。因此,您所描述的行为,设置SUM并期望德语Excel将其解释为SUMME绝对应该是这样。

有几个问题可以帮我们调查一下:

1)您可以尝试设置range.formulas吗?

,而不是通过表值设置公式

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