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.
versuche dies
ws.Cell(rowCounter, colCounter).SetValue<string>(Convert.ToString(fieldValue));
Erwägen:
tableRow.Cell(1).Value = "'2/1997";
Beachten Sie das einfache Anführungszeichen.
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 = "#/####"
ws.Cell(rowCounter, colCounter).Value="'"+Convert.ToString(fieldValue));