2012-09-04 13 views
7

Próbuję użyć C# i ClosedXML do wprowadzenia danych do arkusza programu Excel. Znalazłem większość rzeczy, których szukam, jednak mam pewne problemy z uzyskaniem ClosedXML, aby zająć się liczbą miejsc dziesiętnych, a także zaokrąglić liczbę.ClosedXML: Praca z procentami, 1 miejsce po przecinku i zaokrągleniem?

Obecnie używam cell.Style.NumberFormat.NumberFormatId = 10; dostać komórkę pokazać procentowa z miejsc 2 po przecinku, bym jednak chciał pokazać tylko 1 miejsca po przecinku, a wiki for ClosedXML pokazuje tylko procent z 0 lub 2 miejsc po przecinku.

Następny kiedy nie używam ClosedXML i dodać dane bezpośrednio Excel zaokrąglić miejsc po przecinku, ale kiedy używam ClosedXML wprowadzić dane komórki nie zaokrąglić w górę, czy istnieje sposób, aby wymusić ClosedXML zaokrąglić do mnie, czy muszę to zrobić ręcznie?

Odpowiedz

6

Wygląda na to, że będziesz musiał napisać swój własny NumberFormatId Zgodnie z tym SO Odpowiedź: https://stackoverflow.com/a/7900397/541208, alternatywnie, w ClosedXML docs, to mówi, aby dodać nowy 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"); 

Więc zwyczaj NumberFormat byłoby coś 0.0% na podstawie formatów domyślnych listed here:

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

brakowało mi to jako oczywistą odpowiedź, ale po patrząc na to ja zmieniłem forma t do 'cell.Style.NumberFormat.Format = "0.0%";' i zajęte jest jedno miejsce dziesiętne. Dziękuję Ci. Teraz, aby rozgryźć zagadkę zaokrąglania. –

+0

Odbieram, teraz z 1 miejscem dziesiętnym liczba zaokrągla się prawidłowo. Jeszcze raz dziękuję. –

Powiązane problemy