2012-12-11 14 views

Odpowiedz

20

Aby ustawić zakres tekstu:

xlYourRange.NumberFormat = "@"; 

Można również poprzedzić wartość można umieścić w celi z apostrofem na to, aby go sformatować jako tekst:

xlYourRange.Value = "'"; 

aby ustawić zakres do numeru

xlYourRange.NumberFormat = "0"; 

Oczywiście, jeśli chcesz ustawić format całej kolumny, wtedy twój zakres będzie równy lumn.

xlYourRange = xlWorksheet.get_Range("A1").EntireColumn; 

EDIT:

Terminy są nieco bardziej skomplikowane i zależy również od ustawień regionalnych:

// Results in a Date field of "23/5/2011" 

xlRange.NumberFormat = "DD/MM/YYYY"; 
xlRange.Value = "23/5/2011"; 

// Results in a Custom field of "23/5/2011" 

xlRange.NumberFormat = "DD-MM-YYYY"; 
xlRange.Value = "23/5/2011"; 

// Results in a Custom field of "05/23/2011" 

xlRange.NumberFormat = "MM/DD/YYYY"; 
xlRange.Value = "5/23/2011"; 

// Results in a Custom field of "05-23-2011" 

xlRange.NumberFormat = "MM-DD-YYYY"; 
xlRange.Value = "5/23/2011"; 

// Results in a Date field of "23/05/2011" 

xlRange.NumberFormat = "DD/MM/YYYY"; 
xlRange.Value = "5/23/2011"; 

// Results in a Custom field of "23-05-2011" 

xlRange.NumberFormat = "DD-MM-YYYY"; 
xlRange.Value = "5/23/2011"; 

// Results in a Custom field of "23/5/2011" 

xlRange.NumberFormat = "MM/DD/YYYY"; 
xlRange.Value = "23/5/2011"; 

// Results in a Custom field of "23/5/2011" 

xlRange.NumberFormat = "MM-DD-YYYY"; 
xlRange.Value = "23/5/2011"; 
+0

W przypadku ustawionego zakresu do tej pory xlYourRange.NumberFormat = "DD/MM/YYYY"; to ustawić zakres do niestandardowego typu staram xlYourRange.NumberFormat = "DD-MM-YYYY"; , a następnie ustaw aktualny typ: – Jack1987

+0

@ Jack1987 Wygląda na to, że daty są jeszcze bardziej skomplikowane niż na początku. Zmieniono moją odpowiedź, by zawierała więcej kombinacji, ale wygląda na to, że to głównie próba i błąd. W aplikacjach zakodowałem to, co zwykle robię, ustawiając datę jako ciąg znaków i formatuję ją jako "23 września 2011 r.", Aby pozostała jako ciąg znaków. W ten sposób mogę zawsze zagwarantować format bez względu na ustawienia regionalne użytkownika. –

+0

Jeśli myślisz o problemach z lokalizacją w formatach daty (na przykład w rosyjskiej lokalizacji twój format daty może być "ДД.MM.ГГ"), zobacz moją odpowiedź tutaj: http://stackoverflow.com/a/35418176/ 2199512 – Jordan

0

Jest to odpowiedź na pytanie poprosiłem o tym od jakiegoś czasu plecy.

Przede typy danych to facet wykorzystuje w swojej odpowiedzi to:

private struct ExcelDataTypes 
{ 
    public const string NUMBER = "NUMBER"; 
    public const string DATETIME = "DATETIME"; 
    public const string TEXT = "TEXT"; // also works with "STRING". 
} 

wygląda znajomo?

Jeśli jesteś zainteresowany, tutaj jest link:

Insert DataTable into Excel Using Microsoft Access Database Engine via OleDb

0

Tak, ze format daty wszystko jest bardziej skomplikowane - nawet bardziej skomplikowany niż Sid Holland wspomniał. Powodem są niektóre problemy z lokalizacją. Na przykład, jeśli twój system Windows ma rosyjską lokalizację, powinieneś używać rosyjskich liter w formatach daty, takich jak "ДД.MM.Г" lub "ГГГ-MM-ДД", a zatem powinieneś być w stanie wyodrębnić i zastosować te litery. Zobacz mniej lub bardziej kompletny opis i rozwiązanie tutaj: https://stackoverflow.com/a/35418176/2199512