文字列を会計スタイルとしてフォーマットする最も簡単な方法を知りたいです。{0:c} を使用して通貨としてフォーマットする方法は知っていますが、会計スタイルにはいくつかの違いがあります。 "-" マイナス記号。セルを小数点以下2桁の「会計」としてフォーマットすると、Excelで希望する方法の良い例を見つけることができます。
6 に答える
アライメント要件を無視して、使用できます
number.ToString("€#,##0.00;(€#,##0.00);Zero")
負の数を括弧で囲みます。
数値を揃えるには、通貨記号なしで書式設定し、書式設定された数値にスペースを埋め込む必要があります。固定幅フォントを使用すると、この作業が簡単になります。
編集:
String.Format はあなたの友達のようです:
String.Format("{0,15:#,##0.00 ;(#,##0.00);- }", number)
ここで、15 は出力の合計幅であり、このテキストを通貨記号に追加する必要があります。(繰り返しますが、これは固定幅でのみ整列します)
会計スタイルの形式を処理するための形式文字列のショートカット (既定のルールを持つ 1 文字のもの) はありません (利用可能な形式文字列を含むチート シートはこちら) ため、より具体的なもの (パトリックの回答など) または独自の解析方法。
配置要件は、それらを表示する方法に固有のものです。テーブルを使用していると仮定しています。この場合、HTML がサポートするものによって制限され、Excel のような会計スタイルの配置はサポートされません。
このブログでは、いくつかのさまざまな形式の概要が説明されていましたが、これはあなたが探していたものに近いと思われました。
int neg = -10;
int pos = 10;
// C or c (Currency): It represent how many decimal place of zeros to show.
String.Format("{0:C4}", pos); //"$10.0000"
String.Format("{0:C4}", neg); //"($10.0000)"
パディングは処理しませんが (自分で修正する必要がある場合があります)、適切な括弧があります。
パトリックの方法のバリエーションを使用して何かを行うことができます。これは、処理している値の大きさの上限を知っていると仮定して、フォーマットと配置を処理します。
private static string OutputAsCur(decimal val)
{
string format = " #,##0.00 ; (#,##0.00);Zero";
string frmt = val.ToString(format);
return CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol + frmt.PadLeft(15, ' ');
}
形式を確認するための簡単なアプリの例を次に示します。
static void Main(string[] args)
{
decimal d = 155.55m;
Console.WriteLine(OutputAsCur(d));
Console.WriteLine(OutputAsCur(d * -1));
Console.WriteLine(OutputAsCur(1002.32m));
Console.WriteLine(OutputAsCur(1002.32m * -1));
Console.ReadLine();
}
「会計」形式を適用するには、次の手順に従いました。
- Excel の新しいブックで、セルを選択します。
- データを挿入します(つまり、任意の数値。この例では 80000 を追加します)。
- スクリーンショット #1 に示すように、[(アカウンティング) NumberFormat] を選択します。
スクリーンショット #1:
- 「その他の数値形式」を選択します。
- 「カスタム」を選択します。
- 事前定義された式のいずれかを選択します(スクリーンショット #2 を参照)。
スクリーンショット #2:
私の場合、これはこの数値の望ましい形式です。
これのマイナス面は、フォーマットが適用されたセルを選択すると、「DropDownList」数値フォーマットで選択された (Accounting) が表示されないことです。