2

ClosedXMLを使用して Excel スプレッドシートを作成しています。この問題は、パーセンテージを含むセルの書式設定中に発生します。

私が思いついたフォーマットは0.##%.

小数部分がゼロでない場合にうまく機能します1,15%。ただし、整数値の場合は、小数点を表示したままにし、ゼロを非表示にします。たとえば、次のようになります5,%

小数点記号も非表示にするにはどうすればよいですか?

これは、問題を示す小さなプログラムです。

XLWorkbook wb = new XLWorkbook();
var ws = wb.AddWorksheet("test");

string format = "0.##%";

var cell = ws.Cell(1, 1);
cell.SetValue(5.2M / 100);
cell.Style.NumberFormat.Format = format;

cell = ws.Cell(1, 2);
cell.SetValue(5M / 100);
cell.Style.NumberFormat.Format = format;

wb.SaveAs("test.xlsx");

そして出力は

ここに画像の説明を入力

4

1 に答える 1

0

CLOSED XML: Conditional Formattingへのリンクを提供してくれた Jason に感謝します。

このおかげで、必要な条件付き書式を適用する方法を見つけることができました。

cell.AddConditionalFormat()
    .WhenEquals(
        string.Format(
            "=TRUNC(${0}${1})", 
            cell.WorksheetColumn().ColumnLetter(),
            cell.WorksheetRow().RowNumber()))
    .NumberFormat
    .Format = "general\"%\"";

100 で除算するようになるため、パーセント書式指定子の使用を断念しました。Excel のカスタム数値書式から:

% パーセンテージ。Microsoft Excel は 100 を掛けて % 文字を追加します。

%ここでは、書式指定子としてではなく、単純に文字列として追加します。

したがって、主な数値形式は ですが、値の小数部分がゼロの場合、最終的に条件付き書式を使用して0.##\"%\"、数値形式を一般的な形式に置き換えます。%

于 2013-08-30T03:27:22.273 に答える