web-dev-qa-db-ja.com

EPPlus番号の形式

Epplusで生成されたExcelシートがあり、いくつかの問題が発生しています。同様の課題を解決した人から指示を受けたいと考えています。 double値に数値書式を適用する必要があり、このように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.0ではなく、## 0.0E + 2として表示されることがわかります。何が悪いのでしょうか?

44
Tonto

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";
102
VDWWD