office插件-如何在Excel中从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开发人员中心论坛上问了同样的问题,建议使用Context.displayLanguage或Context.contentLanguage来查找语言并使用不同的公式。但这不可能是普遍的。

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

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

在P3中:

=FORMULATEXT(P2)

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

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

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

有几个问题可以帮助我们调查这个:

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

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

相关内容

  • 没有找到相关文章

最新更新