2015-04-06 16 views
6

Sto cercando di impostare il tipo di dati della cella, ma sembra che sia impossibile farlo con EPPlus.Come impostare il tipo di dati della cella

Se inserisco un numero come valore nella cella, ottengo il tipo di dati Generale nel file Excel esportato.

Se insieme NumberFormat di cellule, per esempio:

workSheet.Cells[range].Style.Numberformat.Format = "mm/dd/yyyy hh:mm:ss"; 

Allora continua a non ottenere data e ora. Il file Excel esportato mostrerà le celle come tipo di dati personalizzato.

È possibile ottenere solo i tipi di dati generali o personalizzati. Voglio impostare il tipo di dati di Cells su Time, ma non posso. Il problema è che, se il tipo di dati non è impostato, poi per qualche motivo tabella pivot in un altro foglio è l'ordinamento numeri come stringhe :(

Quindi, non v'è alcun modo per impostare il tipo di dati di cella per favore?

risposta

6

Il la formattazione numerica diventa un po 'strana con Excel. Fondamentalmente, è un elenco di stringhe predefinite che fa corrispondere una cella per cella Per vedere come appare questo elenco in EPPlus, controlla la classe ExcelNumberFormat.cs nel codice sorgente

Ma se hai solo bisogno che Excel "veda" la cella come un certo tipo nel menu a discesa Numero -> Formato del numero nella barra multifunzione HOME, questo dovrebbe farti capire:

[TestMethod] 
public void Date_Format_Test() 
{ 
    //http://stackoverflow.com/questions/29473920/how-to-set-cell-data-type 

    var existingFile = new FileInfo(@"c:\temp\temp.xlsx"); 
    if (existingFile.Exists) 
     existingFile.Delete(); 

    using (var pck = new ExcelPackage(existingFile)) 
    { 
     var ws = pck.Workbook.Worksheets.Add("Content"); 
     var date = DateTime.Now; 

     //Raw date value as number 
     ws.Cells["A1"].Value = date; 

     //As "Short Date" 
     ws.Cells["A2"].Value = date; 
     ws.Cells["A2"].Style.Numberformat.Format = "mm-dd-yy"; 

     //As "Time" 
     ws.Cells["A3"].Value = date; 
     ws.Cells["A3"].Style.Numberformat.Format = "[$-F400]h:mm:ss\\ AM/PM"; 

     pck.Save(); 
    } 
} 
+0

Funziona :) Grazie mille Ernie! – BorisP

2

Questo consiglio è grande, per l'impostazione tipo di cellula numero in Excel ho usato

worksheet.Column(1).Style.Numberformat.Format = "#,##0.000"; 

ma mi piacerebbe davvero trovare qualche tavolo di formati in EPPlus e tipi di cellule in Excel per ottenere un altro tipo di Excel come valuta, percentuale ecc ...

3

Ecco i 49 formati elencati in EPPlus/EPPlus/Stile/ExcelNumberFormat.cs (located here):

"General" 
"0" 
"0.00" 
"#,##0" 
"#,##0.00" 
"0%" 
"0.00%" 
"0.00E+00" 
"# ?/?" 
"# ??/??" 
"mm-dd-yy" 
"d-mmm-yy" 
"d-mmm" 
"mmm-yy" 
"h:mm AM/PM" 
"h:mm:ss AM/PM" 
"h:mm" 
"h:mm:ss" 
"m/d/yy h:mm" 
"#,##0 ;(#,##0)" 
"#,##0 ;[Red](#,##0)" 
"#,##0.00;(#,##0.00)" 
"#,##0.00;[Red](#,#)" 
"mm:ss" 
"[h]:mm:ss" 
"mmss.0" 
"##0.0" 
"@" 
+0

Gheghe ... quelli sono meno di 49 formati :) – DdW

+0

true! Non ho notato che la dichiarazione del caso mancava alcuni dei valori :) – MEC

Problemi correlati