ClosedXML:使用百分数,小数点后1位和舍入?

时间:2012-09-04 16:10:00

标签: c# rounding decimal closedxml

我正在尝试使用C#和ClosedXML将数据输入到Excel工作表中。我找到了大部分我正在寻找的东西,但是我遇到了一些问题,ClosedXML要处理小数位数以及舍入数字。

我目前正在使用cell.Style.NumberFormat.NumberFormatId = 10; 为了让单元格显示一个带有2位小数的百分比,我想只显示1位小数,而wiki for ClosedXML只显示0或2位小数的百分比。

接下来,当我不使用ClosedXML并直接添加数据时,Excel将向上舍入小数位,但当我使用ClosedXML输入数据时,单元格不会向上舍入,是否有迫使ClosedXML为我舍入的方法,还是我需要手动完成?

1 个答案:

答案 0 :(得分:9)

看起来您可能需要根据此SO答案编写自己的自定义NumberFormatIdhttps://stackoverflow.com/a/7900397/541208,或者在ClosedXML docs中,它会添加新的Style }:

var workbook = new XLWorkbook();
var ws = workbook.Worksheets.Add("Style NumberFormat");

var co = 2;
var ro = 1;

// Using a custom format
ws.Cell(++ro, co).Value = "123456.789";
ws.Cell(ro, co).Style.NumberFormat.Format = "$ #,##0.00";

ws.Cell(++ro, co).Value = "12.345";
ws.Cell(ro, co).Style.NumberFormat.Format = "0000";

// Using a OpenXML's predefined formats
ws.Cell(++ro, co).Value = "12.345";
ws.Cell(ro, co).Style.NumberFormat.NumberFormatId = 3;

ws.Column(co).AdjustToContents();

workbook.SaveAs("StylesNumberFormat.xlsx");

因此,根据默认格式listed here:

,您的自定义NumberFormat类似于0.0%
ws.Cell(ro, co).Style.NumberFormat.Format = "0.0%";