2013-08-30 1 views
2

ClosedXML을 사용하여 Excel 스프레드 시트를 만듭니다. 문제는 백분율을 포함하는 셀을 포맷하는 동안 발생합니다.소수 부분이 0 인 경우 소수 구분 기호를 제거하는 방법은 무엇입니까?

내가 올린 형식은 0.##%입니다.

소수 부분이 0이 아닌 경우 다음과 같이 표시됩니다. 1,15%; 그것은 정수 값일 때 소수점 구분 기호를 표시하고 0을 숨 깁니다 (예 : 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"); 

및 출력은 CLOSED XML: Conditional Formatting에 링크 제이슨에

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

많은 감사입니다 :

다음은 문제를 보여주는 작은 프로그램입니다!

을 : 나는 나를 Excel Custom Number Formats에서 100 에 의해 분할 만들면서, 퍼센트 형식 지정자를 사용하여 포기

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

이에

덕분에 나는 내가 필요로 조건부 서식을 적용 할 방법을 찾아야 관리

% 비율. Microsoft Excel은 100을 곱하고 % 문자를 추가합니다.

이제는 형식 지정자가 아닌 %을 문자열로 추가하기 만하면됩니다.

따라서 주 번호 형식은 0.##\"%\"이지만 값의 소수 부분이 0 인 경우 조건 형식을 사용하여 끝에 %이있는 일반 형식으로 숫자 형식을 대체합니다.