我的所作所为:
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.displayLanguage或Context.contentLanguage来查找语言并使用不同的公式。但这不是普遍的。
我现在使用的是在一些工作表和一些单元格(隐藏)中编写公式,然后在其他单元格中使用FORMULATEXT来获取正确的公式。例如,如果在单元格P2中是这个公式:
=COUNTIF(Test[@[364]:[0]];"<=0")
并在P3中:
=FORMULATEXT(P2)
你加载excel表后得到的,公式用正确的语言,我直接在表中使用它。尽管公式中存在错误,但它仍被翻译。这里用德语:
=ZÄHLENWENN(Test[@[364]:[0]];"<=0")
答案 0 :(得分:1)
Office.js Excel API(如之前的VBA)意味着语言/语言环境无关。也就是说,当您将公式设置为range.formulas
时,它的设计目的只是解释ENGLISH输入(这就是我们也有range.formulasLocal
的原因,对应于公式的特定于语言环境的版本)。因此,您所描述的行为,设置SUM
并期望德语Excel将其解释为SUMME
绝对应该是这样。
有几个问题可以帮我们调查一下:
1)您可以尝试设置range.formulas
吗?
2)如果有效,那么设置range.values = yourFormula
呢?我认为这应该像#1一样工作,但只是想确定。