如果小数部分为零,如何删除小数点分隔符?

时间:2013-08-30 01:17:33

标签: c# excel formatting closedxml

我正在使用ClosedXML来创建Excel电子表格。问题在格式化单元格时发生,包含百分比。

我提出的格式是0.##%

小数部分不为零时效果很好,显示:1,15%;但是当它是整数值时,它会隐藏小数分隔符,同时隐藏零,例如:5,%

如何让它隐藏小数点分隔符呢?

这是一个小程序,展示了这个问题:

XLWorkbook wb = new XLWorkbook();
var ws = wb.AddWorksheet("test");

string format = "0.##%";

var cell = ws.Cell(1, 1);
cell.SetValue(5.2M / 100);
cell.Style.NumberFormat.Format = format;

cell = ws.Cell(1, 2);
cell.SetValue(5M / 100);
cell.Style.NumberFormat.Format = format;

wb.SaveAs("test.xlsx");

,输出

enter image description here

1 个答案:

答案 0 :(得分:0)

非常感谢Jason提供CLOSED XML: Conditional Formatting的链接!

由于这个原因,我设法找到了应用我需要的条件格式的方法:

cell.AddConditionalFormat()
    .WhenEquals(
        string.Format(
            "=TRUNC(${0}${1})", 
            cell.WorksheetColumn().ColumnLetter(),
            cell.WorksheetRow().RowNumber()))
    .NumberFormat
    .Format = "general\"%\"";

我放弃使用百分比格式说明符,因为它使我除以100。 来自Excel Custom Number Formats

  

%百分比。 Microsoft Excel乘以100并添加%   字符。

现在我只是将%添加为字符串,而不是格式说明符。

因此主数字格式为0.##\"%\",但当值的小数部分为零时,我使用条件格式将数字格式替换为%的常规格式。