2

私がやること:

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 フォーラムで同じ質問をしたところ、Context.displayLanguageまたはContext.contentLanguageを使用して言語を見つけ、別の式を使用するという提案がありました 。しかし、これは普遍的ではありません。

私が現在使用しているのは、数式をいくつかのシートといくつかのセル (非表示) に書き込んでから、他のセルで FORMULATEXT を使用して正しい数式を取得することです。たとえば、セル P2 に次の式がある場合:

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

そしてP3で:

=FORMULATEXT(P2)

Excelシートがロードされた後、適切な言語の式が得られ、テーブルで直接使用しています. そして、式のエラーにもかかわらず、それは翻訳されています. ここでドイツ語で:

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

1 に答える 1

1

Office.js Excel API (以前の VBA と同様) は、言語/ロケールに依存しないことを意図しています。つまり、数式を に設定するとrange.formulas、英語の入力のみを解釈するように設計されています (そのためrange.formulasLocal、ロケール固有のバージョンの数式に対応する もあります)。したがって、SUMドイツのExcelがそれを解釈するように設定して期待するという、あなたが説明する動作SUMMEは、絶対にあるべきものです。

これを調査するのに役立ついくつかの質問:

1)表の値を介して式を設定する代わりに、設定してみていただけますrange.formulasか?

2)それが機能する場合、設定はrange.values = yourFormulaどうですか?これは#1と同じように機能するはずですが、確認したかっただけです。

于 2016-07-20T15:43:03.767 に答える