0

データ グリッドでは、標準の書式文字列 (この場合は "N02") を使用して書式設定された数値を表示しています。このデータを Excel にエクスポートするとき、Excel の列を同じようにフォーマットしたいと思います。現在のロケールの「N02」形式を評価し、実際の形式文字列を取得する方法はありますか?

そうでない場合は、現在の NumberFormat の NumberNegativePattern、NumberGroupSizes、NumberGroupSeparator、および NumberDecimalSeparator プロパティを使用して再構築する必要があると考えていますが、自分のロケール/文化よりも自分のためにそれを正しく取得する可能性が本当に好きではありません.

これは、Excel 相互運用呼び出しに設定したいものです。

((Range)excelSheet.Columns[columnLetter + ":" + columnLetter, Type.Missing]).NumberFormat = xxxxx;

「N」と「N02」の両方に xxxxx を使用したいのですが、「N02」には「#,##0.00;-#,##0.00」のように使用できることはわかっています。明確な。

4

1 に答える 1

0

ここでの問題は 2 つあります。第 1 に、数値スタイルの操作に関しては、Excel の相互運用機能は非常に限られた機能セットしか公開していません。次に、Excel 自体はカルチャ固有の書式設定にほとんど注意を払っていません。

たとえば、Excel の Open XML 標準では、組み込みの数値書式スタイルはすべてハードコードされています ( ECMA 標準ドキュメントの 2128 ページを参照)。ユーザーのロケールに応じてさまざまなスタイルが使用されますが、.NET Framework のグローバリゼーション機能のように、Excel はユーザーの地域設定のオーバーライドに注意を払いません。標準の数値書式文字列と Excel の同等の文字列を (地域ごとに) 組み合わせたとしても、Windows の地域設定によって書式が異なる場合があります。

flindeberg がコメントで述べたように、セルの値をテキストとして書式設定することは、数値が .NET で書式設定される方法が Excel でどのように表示されるかを実際に確認する唯一の方法です。

あなたが取り組んでいる制限のため、スプレッドシートを生成するときは、文化ごとに特化しようとするのではなく、不変の文化を対象にすることをお勧めします。インバリアント カルチャの規則に従うことで、標準の数値書式文字列を Excel で使用できるように拡張形式に変換するアルゴリズムを簡単に作成できます。

于 2012-06-08T06:44:45.460 に答える