質問

文字列を会計スタイルとしてフォーマットする最も簡単な方法を知りたいと思います。 {0:c}を使用して通貨としてフォーマットする方法は知っていますが、会計スタイルにはいくつかの違いがあります。たとえば、すべてのドルサインはすべての小数点と同様に並んでおり、ネガは括弧ではなく括弧で表現されます。 "-" マイナス記号。 2つの小数点以下の場所を持つ「会計」としてセルをフォーマットすると、Excelで私がそれを望む方法の良い例を見つけることができます。

役に立ちましたか?

解決

アラインメント要件を無視すると、使用できます

number.ToString("€#,##0.00;(€#,##0.00);Zero")

負の数をブラケットにします。

数値を調整するには、通貨記号なしでフォーマットする必要があり、フォーマットされた数字をスペースで自分でパッドにパッドする必要があります。固定幅フォントを使用すると、このジョブが簡単になります。

編集:

string.formatはあなたの友達です:

String.Format("{0,15:#,##0.00 ;(#,##0.00);-   }", number)

ここで、15は出力の総幅であり、このテキストを通貨記号に追加する必要があります。 (繰り返しますが、これは固定幅のみに並んでいます)

他のヒント

会計スタイルの形式を処理するためのフォーマット文字列ショートカット(デフォルトルールを備えたシングルキャラクターのショートカット)はありません(これが利用可能なフォーマット文字列のチートシートです)したがって、より具体的なもの(パトリックの答えのように)または独自の解析方法を書く必要があります。

アラインメント要件は、それらを表示する方法に固有のものです。私はあなたがテーブルを使用していると仮定しています。その場合、あなたは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)"

パディングを処理しません(自分で修正する必要がある場合があります)が、適切な括弧があります。

Patricksメソッドのバリエーションを使用して何かをすることができます。これは、あなたが扱っている値の大きさの上限を知っていると仮定して、フォーミングとアラインメントを処理します。

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();
     }

string.formatにフォーマット文字列を使用して、達成しようとしていることを取得できます。唯一のトリックは、閉じた括弧マークを持たないため、正の数字は、列にある負の数字と整列する場合、最後にスペースを組み込む必要があることです。トリックは、HTMLが無視しない方法でそのスペースを文字列に入れることです。 HTMLの非壊れたスペースを示すHTMLエンティティを使用するだけです。

これがサンプルコードです。まず、ASPXで。

<table>
...
    <tr>
        <th scope="row" colspan="2">Total Revenue</th>
        <td class="numeric total"><asp:Label runat="server" ID="TotalRevenueLabel" /></td>
    </tr>
...
</table>

さて、CodeBehind。

public const string kMoneyFormat = "#,#.00'&nbsp;';(#,#.00);'-.--&nbsp;'";

public void DataBind()
{
    using (FinancialDataContext sql = new FinancialDataContext())
    {
        var periodQuery = from m in sql.Forecasts()
                          select m;
        ForecastsResult periodData = periodQuery.Single();
        decimal totalRevenue = period.Data.income_actual.Value + periodData.other_income.Value;
        TotalRevenueLabel.Text = totalRevenue.ToString(kMoneyFormat);
    }
}

「会計」形式を適用するために、これらの手順に従いました。

  • Excelの新しい本で、セルを選択してください。
  • データを挿入します (つまり、任意の数字;この例では、80000を追加).
  • スクリーンショット#1に示されているように、(アカウンティング)ナンバーフォームを選択してください:

スクリーンショット#1:

Screenshot 1

  • 「その他の数字形式」を選択します。
  • 「カスタム」を選択します。
  • 事前に定義された式のいずれかを選択します (スクリーンショット#2を参照).

スクリーンショット#2:

Screenshot 2

私の場合、これはこの番号の目的の形式です。


ネガティブ この辺は、フォーマットが適用されているセルを選択すると、[ドロップダウンリスト]番号形式で選択された(アカウンティング)が表示されないことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top