2013-08-30 113 views
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"); 

和輸出

enter image description here

+0

格式字符串「#。##%」產生了什麼? – Jason

+0

@Jason我使用'0。##%',而不是'#。##%',因爲您的變體根本不打印零;比較'0.5%'和',5%'。而且閏區仍然存在,因爲它還打印了小數點分隔符 – horgh

+3

然後我會建議使用條件格式。格式字符串似乎不支持您想要實現的內容。不是我能看到的。 http://closedxml.codeplex.com/wikipage?title=Conditional%20Formatting&referringTitle=Documentation – Jason

回答

0

非常感謝傑森的鏈接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.##\"%\",但是當數值的小數部分爲零時,我最終使用條件格式將數字格式替換爲%