2015-04-06 18 views
6

Próbuję ustawić typ danych komórki, ale wydaje się, że nie można tego zrobić z EPPlus.Jak ustawić typ danych komórki

Po umieszczeniu liczby jako wartości w komórce otrzymuję ogólny typ danych w wyeksportowanym pliku Excel.

Jeśli zestaw numberFormat komórek, na przykład:

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

Wtedy jeszcze nie dostać datę lub godzinę. Wyeksportowany plik programu Excel wyświetli komórki jako niestandardowy typ danych.

Mogę otrzymywać tylko ogólne lub niestandardowe typy danych. Chcę ustawić typ danych Cells na Time, ale nie mogę. Problemem jest to, jeśli typ danych nie jest ustawiona, to dla niektórych powód tabeli przestawnej w innym arkuszu jest do sortowania liczb jako ciągi :(

Więc, czy jest jakiś sposób, aby ustawić typ danych komórki proszę?

Odpowiedz

6

formatowanie liczb jest trochę dziwne z programu Excel, zasadniczo jest to lista predefiniowanych ciągów, więc komórka dopasowuje się do komórki Aby zobaczyć, jak wygląda ta lista w EPPlus, sprawdź klasę ExcelNumberFormat.cs w kodzie źródłowym:

Ale jeśli po prostu potrzebujesz programu Excel "zobacz" komórkę jako określony typ w menu rozwijanym Numer -> Format liczb na wstążce HOME, powinno to spowodować:

[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

To działa :) Dzięki Ernie bardzo! – BorisP

2

Ta rada jest świetna, do ustawiania typu komórek numer w programie Excel użyłem

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

ale naprawdę chciałbym znaleźć jakąś tabelę formatów w EPPlus i rodzajów komórek w programie Excel, aby dostać kolejne rodzaje Excel jak waluta, Procent etc ...

3

Oto formaty 49 wymienione w EPPlus/EPPlus/Styl/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 ... to mniej niż 49 formatów :) – DdW

+0

prawda! Nie zauważyłem, że w przypadku sprawy brakowało niektórych wartości :) – MEC

Powiązane problemy