2

Что я делаю:Как написать формулу из Javascript Api в Excel, которая не зависит от языка пользователя?

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 с немецким стандартным языком?

Edit:

Я отметит ответ на Майкла Златковский, потому что она работает. Но я не использую его. Проблема в том, что я получаю много «аргумент недействителен или отсутствует или имеет неправильный формат».

Я задал тот же вопрос в Office Dev Center forum и предложил использовать Context.displayLanguage или Context.contentLanguage, чтобы найти этот язык и использовать разные формулы. Но это не может быть универсальным.

То, что я использую сейчас, это написать формулы на каком-то листе и некоторых ячейках (скрытых), а затем использовать FORMULATEXT в другой ячейке, чтобы получить правильную формулу. Например, если в ячейке Р2 эта формула:

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

и P3:

=FORMULATEXT(P2) 

вы получите после того, как лист первенствовать загружен, формула на правильном языке, и я использую его прямо в стол. И, несмотря на ошибки в формуле, она переводится. Здесь на немецком языке:

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

Просто предположим, но я думаю, что вы изменяете текст ячейки вместо формул. Попробуйте перекопать в свойство формул отдельных ячеек. – Taosique

ответ

1

API-Office.js Excel (например, VBA перед ними) предназначены для языка/языковой агностик. То есть, когда вы устанавливаете формулу на range.formulas, она предназначена только для интерпретации ввода в формате ENGLISH (поэтому у нас также есть range.formulasLocal, соответствующий языковым версиям формул). Поэтому поведение, которое вы описываете, устанавливает SUM и ожидает, что немецкий Excel интерпретирует его как SUMME, что и должно быть.

пару вопросов, чтобы помочь нам разобраться в этом:

1) Вместо того чтобы устанавливать формулу с помощью табличного значения, вы могли бы попробовать установить range.formulas?

2) Если это работает, как насчет установки range.values = yourFormula? Я предполагаю, что это должно работать так же, как # 1, но просто хотелось быть уверенным.

 Смежные вопросы

  • Нет связанных вопросов^_^