2

我正在使用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");

输出是

在此处输入图像描述

4

1 回答 1

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 自定义数字格式

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

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

所以主要的数字格式是0.##\"%\",但是当值的小数部分为零时,我将数字格式替换为一般格式,%最后使用条件格式。

于 2013-08-30T03:27:22.273 回答