1. ホーム
  2. c#

[解決済み] EPPlusの番号形式

2023-07-17 09:26:23

質問

エプラスで作成したExcelシートがあるのですが、いくつか痛いところがあり、同じような課題を解決された方のご指導をお願いしたいです。

二重の値に数値書式を適用する必要があり、Excelでこのように表示したいのですが。

  • 8 → 8.0
  • 12 → 12.0
  • 14.54 → 14.5
  • 0 → 0.0

以下は私のコードです。

ws.Cells[row, col].Style.Numberformat.Format = "##0.0";

最終的なExcelファイルでは、この形式の最後に常にE+0が付加されるため、代わりに以下のように最終的な値が表示されます。

  • 8 → 8.0E+0
  • 12 → 12.0E+0
  • 14.54 → 14.5E+0
  • 0 → 000.0E+0

生成されたExcelシートの書式セルで確認すると、私の書式は次のように表示されています。 ##0.0E+2 と表示され、代わりに ##0.0 を適用したものです。

何が間違っているのでしょうか?

どのように解決するのですか?

EPPlusの数値フォーマットのオプションを紹介します。

//integer (not really needed unless you need to round numbers, Excel will use default cell properties)
ws.Cells["A1:A25"].Style.Numberformat.Format = "0";

//integer without displaying the number 0 in the cell
ws.Cells["A1:A25"].Style.Numberformat.Format = "#";

//number with 1 decimal place
ws.Cells["A1:A25"].Style.Numberformat.Format = "0.0";

//number with 2 decimal places
ws.Cells["A1:A25"].Style.Numberformat.Format = "0.00";

//number with 2 decimal places and thousand separator
ws.Cells["A1:A25"].Style.Numberformat.Format = "#,##0.00";

//number with 2 decimal places and thousand separator and money symbol
ws.Cells["A1:A25"].Style.Numberformat.Format = "€#,##0.00";

//percentage (1 = 100%, 0.01 = 1%)
ws.Cells["A1:A25"].Style.Numberformat.Format = "0%";

//accounting number format
ws.Cells["A1:A25"].Style.Numberformat.Format = "_-$* #,##0.00_-;-$* #,##0.00_-;_-$* \"-\"??_-;_-@_-";

小数点と千のセパレータは、独自のローカライズに変更しないでください。 ローカライゼーションに変更しないでください。Excelがそうしてくれます。

リクエストにより、いくつかのDateTimeフォーマット・オプションを追加しました。

//default DateTime pattern
worksheet.Cells["A1:A25"].Style.Numberformat.Format = DateTimeFormatInfo.CurrentInfo.ShortDatePattern;

//custom DateTime pattern
worksheet.Cells["A1:A25"].Style.Numberformat.Format = "dd-MM-yyyy HH:mm";