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

sec*_*oat 7 c# decimal rounding closedxml

我正在尝试使用C#并将ClosedXML数据输入Excel工作表.我找到了我正在寻找的大部分内容,但是我有一些问题ClosedXML需要处理小数位数以及舍入数字.

我目前正在使用cell.Style.NumberFormat.NumberFormatId = 10; 单元格来显示一个带有2位小数的百分比,但是我想只显示1位小数,而wikiClosedXML只显示0或2位小数的百分比.

接下来,当我不使用ClosedXML并直接添加数据时,Excel将向上舍入小数位,但是当我ClosedXML用来输入数据时,单元格不会向上舍入,是否有办法强制ClosedXML为我舍入,或者我需要手动做到这一点?

Tan*_*ash 9

看起来你可能必须NumberFormatId根据这个SO 编写自己的自定义答案: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");
Run Code Online (Sandbox Code Playgroud)

因此,您的自定义NumberFormat0.0%基于此处列出的默认格式:

ws.Cell(ro, co).Style.NumberFormat.Format = "0.0%"; 
Run Code Online (Sandbox Code Playgroud)