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

标签 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")

最佳答案

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

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

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

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

关于excel - 如何在 Excel 中从 Javascript Api 编写一个独立于用户语言的公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38482319/

相关文章:

excel - VLOOKUP 计算单元格失败

excel - VB6/VBA 不允许加载 COM 加载项

c# - visual studio Word Addin 需要超过 15 秒才能关闭 word

excel插件 |在 list 加载时在桌面 excel 上显示错误

excel - 修改 Excel VBA 程序 - 清除列中的单元格

vba - Excel根据当前日期自动填充日期

vba - 删除范围内的空白或零列

ms-word - document.contentControls 未返回文档中的所有 ContentControls

javascript - 使用javascript office api以编程方式打开excel文档

javascript - 如何使用 office.js Excel Addin 中的行号和列号获取完整的 Excel 范围地址?