我正在尝试使用C#和ClosedXML
将数据输入到Excel工作表中。我已经找到了我要找的大多数东西,但是我在获取ClosedXML
来处理小数位数以及四舍五入时遇到了一些问题。
我目前正在使用cell.Style.NumberFormat.NumberFormatId = 10;
为了使该单元格显示一个具有2个小数位的百分率,我只想显示1个小数位,而wiki for ClosedXML
仅显示0个或2个小数位的百分数。
接下来,当我不使用ClosedXML
并直接添加数据时,Excel会将小数点后一位四舍五入,但是当我使用ClosedXML
输入数据时,单元格不会四舍五入,有没有办法强制ClosedXML
为我四舍五入,或者执行我需要手动执行此操作吗?
最佳答案
看来您可能必须根据此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");
因此,您的自定义
NumberFormat
将类似于基于默认格式listed here:的0.0%
ws.Cell(ro, co).Style.NumberFormat.Format = "0.0%";