3

次のような式を含む Syncfusion GridControl があります: IF(R2<>0,100*(R3-R2)/R2,0)

これらの数式はグリッドで正常に機能し、数式計算エンジンは、関係する PC の地域設定/数値形式 (英語、フランス語、ハンガリー語など) に関係なく、正しい結果を返します。

また、XlsIO GridtoExcel 関数を使用して、英語の地域設定で Excel ファイルを作成するときにも完全に機能します。

ただし、Excel でセミコロンの引数区切り記号を使用するフランス語やハンガリー語などの地域設定で GridtoExcel を使用しようとすると、次のようなエラーが発生します。

予期しないトークンです。予期しないトークン タイプ: tNumber、文字列値: ,0 位置 24。式: IF(R2<>0,100*(R3-R2)/R2,0)、位置: 26

SetSeparators 関数を使用しようとしましたが、効果がありません ( KB 記事で推奨されているように)

ここで正しいアプローチに関するアイデアはありますか? 残念ながら、SetSeparators に関するドキュメントは、ここではあまり役に立ちません。

どうもありがとう

リチャード

4

1 に答える 1

2

SetSeparators() メソッドは WorkBook のみに設定されました。グリッドの場合、GridFormulaEngine でセパレーターを指定できます。GridFormulaEngine は、カルチャ 'en-US' を既定のカルチャと見なします。他のカルチャの場合、ParseDecimalSeparator プロパティと ParseArgumentSeparator プロパティを SetSeparators() メソッドと共に明示的に設定する必要があります。ここにコードがあります、

 GridFormulaEngine.ParseDecimalSeparator = char.Parse(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);

 GridFormulaEngine.ParseArgumentSeparator = char.Parse(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator);

よろしく、クリスト。

于 2013-01-31T08:58:07.633 に答える