如何从Javascript Api中编写一个公式,这与用户语言无关?
我做的事:
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中用德语作为标准语言(在单元格中)使用英文写一个公式吗?
编辑 :
我将标记迈克尔·兹拉特科夫斯基的答案,因为它正在工作。 但是我没有使用它。 问题是我得到了很多“这个论点是无效的或失踪或格式不正确。”
我在Office开发人员中心论坛上提出了同样的问题,并且build议使用Context.displayLanguage或Context.contentLanguage来查找语言并使用不同的公式。 但是这不能通用。
我现在使用的是在一些表单和一些单元格(隐藏)中写入公式,然后在其他单元格中使用FORMULATEXT来获取正确的公式。 例如,如果在单元格P2中是这个公式:
=COUNTIF(Test[@[364]:[0]];"<=0")
在P3中:
=FORMULATEXT(P2)
你得到的Excel表格加载后,公式在正确的语言,我在表中直接使用它。 尽pipe公式中的错误被翻译。 这里用德语:
=ZÄHLENWENN(Test[@[364]:[0]];"<=0")
Office.js Excel API(如之前的VBA)意味着语言/语言环境不可知。 也就是说,当你将一个公式设置为range.formulas
,它被devise为只解释英文input(这就是为什么我们也有range.formulasLocal
,对应于特定于语言环境的公式的版本)。 所以你所描述的行为,设置SUM
,期待德国Excel把它解释为SUMME
这绝对是它应该的。
有几个问题可以帮助我们调查:
1)而不是通过表值设置公式,你可以尝试设置range.formulas
?
2)如果这有效,那么设置range.values = yourFormula
? 我认为这应该就像#1,但只是想确定。