ClosedXML:使用百分比、小数点后1位和四舍五入



我正试图使用C#和ClosedXML将数据输入excel工作表。我已经找到了我要找的大多数东西,但我在使用ClosedXML处理小数位数以及舍入数字时遇到了一些问题。

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

接下来,当我不使用ClosedXML直接添加数据时,Excel会将小数点向上取整,但当我使用ClosedXML输入数据时,单元格不会向上取整数,有没有办法强制ClosedXML为我取整,或者我需要手动执行?

看起来您可能必须根据这个SO答案编写自己的自定义NumberFormatId:https://stackoverflow.com/a/7900397/541208或者,在ClosedXML文档中,它说添加一个新的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");

因此,您的自定义NumberFormat将类似于基于此处列出的默认格式的0.0%

ws.Cell(ro, co).Style.NumberFormat.Format = "0.0%"; 

最新更新