2012-09-04 21 views
7

Sto tentando di utilizzare C# e ClosedXML per immettere dati in un foglio Excel. Ho trovato la maggior parte delle cose che sto cercando, tuttavia ho alcuni problemi con ClosedXML per occuparmi del numero di cifre decimali e dell'arrotondamento del numero.ClosedXML: utilizzo di percentuali, 1 decimale e arrotondamento?

Attualmente sto usando cell.Style.NumberFormat.NumberFormatId = 10; per ottenere il cellulare di mostrare una percentuale con 2 cifre decimali, Vorrei tuttavia per mostrare solo 1 decimale, e il wiki for ClosedXML mostra solo cento con 0 o 2 cifre decimali.

Avanti quando io non uso ClosedXML e aggiungere i dati direttamente Excel arrotondare le cifre decimali, ma quando uso ClosedXML per inserire i dati le cellule non arrotondare, c'è un modo per forzare ClosedXML per arrotondare per io, o devo farlo manualmente?

risposta

6

Sembra che potrebbe essere necessario scrivere il proprio personalizzato NumberFormatId secondo questo SO Risposta: https://stackoverflow.com/a/7900397/541208, in alternativa, nel ClosedXML docs, si dice per aggiungere un nuovo 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"); 

Quindi la vostra abitudine NumberFormat sarebbe qualcosa di simile 0.0% sulla base dei formati predefiniti listed here:

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

mi mancava questo come la risposta ovvia, ma dopo aver guardato a lui ho cambiato forma t a 'cell.Style.NumberFormat.Format = "0.0%";' e la singola cifra decimale è curata. Grazie. Ora per capire il puzzle di arrotondamento. –

+0

Riporto, ora con 1 decimale il numero è arrotondato correttamente. Grazie ancora. –