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

C# ClosedXML:使用百分比、小数点后1位和四舍五入?,c#,rounding,decimal,closedxml,C#,Rounding,Decimal,Closedxml,我正在尝试使用C#和ClosedXML将数据输入excel工作表。我已经找到了我要找的大多数东西,但是我在使用ClosedXML处理小数位数以及四舍五入时遇到了一些问题 我目前正在使用cell.Style.NumberFormat.NumberFormatId=10 为了让单元格显示小数点后2位的百分比,我只想显示小数点后1位,而只显示小数点后0或2位的百分比 下一步,当我不使用ClosedXML直接添加数据时,Excel会将小数点四舍五入,但当我使用ClosedXML输入数据时,单元格不会四舍

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

我目前正在使用
cell.Style.NumberFormat.NumberFormatId=10
为了让单元格显示小数点后2位的百分比,我只想显示小数点后1位,而只显示小数点后0或2位的百分比


下一步,当我不使用
ClosedXML
直接添加数据时,Excel会将小数点四舍五入,但当我使用
ClosedXML
输入数据时,单元格不会四舍五入,有没有办法强制我将
ClosedXML
四舍五入,或者我需要手动完成吗?

看起来您可能需要根据以下答案编写自己的自定义
NumberFormatId
,或者,在中,它说添加一个新的
样式

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%


我错过了这个显而易见的答案,但在看了之后,我将格式更改为“cell.Style.NumberFormat.format=“0.0%”;'保留小数点后的一位。非常感谢。现在来解取整之谜。我把它拿回来,现在小数点后1位的数字正确取整了。再次感谢你。
ws.Cell(ro, co).Style.NumberFormat.Format = "0.0%";