9

我正在尝试使用 C# 并将ClosedXML数据输入到 Excel 工作表中。我已经找到了我正在寻找的大部分东西,但是我在ClosedXML处理小数位数以及四舍五入方面遇到了一些问题。

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

接下来当我不使用ClosedXML并直接添加数据时,Excel会将小数位向上四舍五入,但是当我使用ClosedXML输入数据时单元格不四舍五入,有没有办法强制ClosedXML为我四舍五入,还是我需要手动做吗?

4

1 回答 1

11

看起来您可能必须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");

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

ws.Cell(ro, co).Style.NumberFormat.Format = "0.0%"; 
于 2012-09-04T17:00:16.890 回答