2012-09-04 4 views
7

C# 및 ClosedXML을 사용하여 Excel 시트에 데이터를 입력하려고합니다. 내가 찾고있는 대부분의 것들을 발견했다. 그러나 숫자를 반올림하는 것과 마찬가지로 소수점 이하 자릿수를 처리하기 위해 ClosedXML을 얻는 데 몇 가지 문제가있다. 나는 현재 cell.Style.NumberFormat.NumberFormatId = 10; 2 소수 자릿수의 몇 퍼센트를 표시하기 위해 세포를 얻기 위해 사용하고ClosedXML : 퍼센트로 작업, 소수점 1 자리 및 반올림?

는, 그러나 나는 단지 1 소수점 자리를 표시 하 고 싶습니다, 그리고 wiki for ClosedXML는 0 또는 2 소수점으로 퍼센트를 보여줍니다. 내가 직접 Excel에서 최대 소수점 이하 자릿수를 반올림합니다,하지만 난 세포가 반올림하지 않는 데이터를 입력 ClosedXML를 사용하는 경우, 라운드 할 ClosedXML을 강제 할 수있는 방법이 ClosedXML를 사용하여 데이터를 추가하지 않습니다

다음 나, 아니면 수동으로해야합니까?

답변

6

당신이 SO 답변이에 따라 사용자 정의 NumberFormatId를 작성해야 할 수도 있습니다 것 같은데 : https://stackoverflow.com/a/7900397/541208를, 또는, ClosedXML docs, 그것은 추가라는 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는 것 기본 형식 listed here:

ws.Cell(ro, co).Style.NumberFormat.Format = "0.0%"; 
+0

내가 분명한 대답은이 놓친하지만보고 후 내 견적을 변경 한 기반으로 0.0% 같은 t to 'cell.Style.NumberFormat.Format = "0.0 %";' 작은 소수점 자리는 처리됩니다. 고맙습니다. 이제는 반올림 퍼즐을 찾아야합니다. –

+0

나는 그것을 반납한다. 이제 소수점 1 자리가 반올림된다. 다시 감사합니다. –