我正在尝试使用C#和ClosedXML
将数据输入到Excel工作表中。我找到了大部分我正在寻找的东西,但是我遇到了一些问题,ClosedXML
要处理小数位数以及舍入数字。
我目前正在使用cell.Style.NumberFormat.NumberFormatId = 10;
为了让单元格显示一个带有2位小数的百分比,我想只显示1位小数,而wiki for ClosedXML
只显示0或2位小数的百分比。
接下来,当我不使用ClosedXML
并直接添加数据时,Excel将向上舍入小数位,但当我使用ClosedXML
输入数据时,单元格不会向上舍入,是否有迫使ClosedXML
为我舍入的方法,还是我需要手动完成?
答案 0 :(得分:9)
看起来您可能需要根据此SO答案编写自己的自定义NumberFormatId
:https://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%";