web-dev-qa-db-de.com

Behalten Sie das Excel-Zellenformat als Text mit "datumsähnlichen" Daten bei

Dies scheint albern, aber ich konnte meine Werte im Format #/#### nicht als Literalzeichenfolge schreiben lassen, anstatt als Datum in Excel formatiert zu werden.

Ich verwende ClosedXML zum Schreiben in Excel und verwende Folgendes:

// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).DataType = XLCellValues.Text;
tableRow.Cell(1).Value = "2/1997";
// snip

Betrachte ich das Excel-Ausgabeblatt, das ich in der Zelle 2/1/1997 erhalte - obwohl ich das Format als Text im Code einstelle, erhalte ich es als "Datum" in der Excel-Tabelle - habe ich dies durch Klicken mit der rechten Maustaste auf die Zelle überprüft. Formatzelle, wobei "Datum" als Format verwendet wird.

Wenn ich etwas ändere bis:

// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).Value = "2/1997";
tableRow.Cell(1).DataType = XLCellValues.Text;
// snip

Stattdessen erhalte ich 35462 als Ausgabe.

Ich möchte nur, dass mein Literalwert 2/1997 im Arbeitsblatt angezeigt wird. Bitte geben Sie Hinweise zur Korrektur.

11
Kritner

versuche dies

ws.Cell(rowCounter, colCounter).SetValue<string>(Convert.ToString(fieldValue));
24
Alexey Miller

Erwägen:

tableRow.Cell(1).Value = "'2/1997";

Beachten Sie das einfache Anführungszeichen.

2
Gary's Student

Ich bin mir nicht sicher, was ClosedXML angeht, aber probiere es vielleicht mit Range.NumberFormat ( MSDN Link )

Zum Beispiel...

Range("A1").NumberFormat = "@"

Oder

Selection.NumberFormat = "#/####"
1
u8it
ws.Cell(rowCounter, colCounter).Value="'"+Convert.ToString(fieldValue));
0
Rio Stephen