Dies scheint albern, aber ich konnte nicht meine Werte im Format #/####
zu schreiben als die literale Zeichenfolge statt als ein Datum innerhalb von Excel formatiert werden .Keep Excel Zelle Format als Text mit "Datum wie" Daten
Ich verwende ClosedXML zu übertreffen zu schreiben, und mit dem folgenden:
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).DataType = XLCellValues.Text;
tableRow.Cell(1).Value = "2/1997";
// snip
am Ausgang der Suche Blatt Excel ich in der Zelle erhalten 2/1/1997
- obwohl ich das Format als Text habe die Einrichtung in Code, ich bekomme es als "Datum" in der Excel-Tabelle - ich überprüft dies, indem Sie mit der rechten Maustaste auf die Zelle, formatieren Zelle, sehen "Datum" als das Format.
Wenn ich die Dinge ändern sich bis zu:
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).Value = "2/1997";
tableRow.Cell(1).DataType = XLCellValues.Text;
// snip
ich stattdessen 35462
als meine Ausgabe erhalten.
Ich möchte nur meinen Literalwert von 2/1997
auf dem Arbeitsblatt angezeigt werden. Bitte geben Sie an, wie Sie korrigieren können.
Das funktionierte für mich, aber kann jemand kommentieren, warum das funktioniert? – jaredbaszler
Ich konnte auch den obigen Code abrunden, wohl wissend, dass mein 'fieldValue' bereits eine Zeichenkette war: ' ws.Cell (rowCounter, colCounter) .SetValue (fieldValue); ' – jaredbaszler
@jaredbaszler dies ist ein dokumentiert in der Wiki für ClosedXML. Wenn Sie einen Wert mit cell.Value = blah setzen, werden die Werte automatisch für Sie automatisch konvertiert, so dass die Zeichenfolge automatisch als Datum erkannt und konvertiert wird (ähnlich wie Excel standardmäßig CSV-Dateien verwendet). Die Zelle.SetValue() vermeidet dies jedoch ausdrücklich, und wenn der Wert eine Zeichenfolge ist, bleibt sie eine Zeichenfolge in der Excel-Datei. –