2017-09-26 5 views
0

Ich habe ähnliche Fragen zu ClosedXML, wie diese one aber ein bisschen anders. Die SetDataType-Methode funktioniert nicht. Zum Beispiel habe ich Wert string dps = "3.12.02" , die weder ein Datum noch eine Nummer ist, es ist gültiger Text.ClosedXML - Einstellung Datentyp für Zelle funktioniert nicht

Wenn ich dies tun: ws.Cell(1, 1).Value = dps; ws.Cell(1, 1).SetDataType(XLCellValues.Text);

und die Datei speichern und es dann in Excel öffnen, sie wandeln es noch zu einigen rubish wie 37593 Ich versuchte es vor zu setzen und nach dem Wert, keine Änderung .

Kann mir bitte jemand helfen?

Antwort

1

Die Methode .Value versucht, den Typ des von Ihnen festgelegten Werts zu erraten. In Ihrem Fall ist der Wert eine gültige (d. H. Analysierbare) DateTime, die intern als Zahlen gespeichert sind.

Um einen Wert explizit festgelegt, ohne raten, verwenden:

string dps = "3.12.02"; 
ws.Cell(1, 1).SetValue(dps); 
+0

Danke !! Beide Szenarien funktionieren perfekt, aber aufgrund meines schlechten Rufes kann ich nicht upbooten :(also zumindest möchte ich dir auf diese Weise danken :) – Lucas

+0

Pleasure. Ich habe auch den Doctext von IXCell.Value aktualisiert, um hoffentlich zu verdeutlichen, dass Datentypen erraten werden, wenn Sie diese Methode verwenden. https://github.com/ClosedXML/ClosedXML/commit/93f42089f952c4d71912a0749c770035c4a494a4 –

0

Obwohl ich Ihnen nicht sagen kann, warum es nicht funktioniert, ist eine einfache Möglichkeit, Ihre Zeichenfolge mit einem Apostroph voranzukommen ('). Dies zwingt Excel, alles, was folgt, als Text zu behandeln.

string dps = "'3.12.02"; 
ws.Cell(1, 1).Value = dps; 
+0

Thank you !! Beide Szenarien funktionieren perfekt, aber aufgrund meines schlechten Rufs kann ich nicht upvote :(also zumindest möchte ich dir auf diese Weise danken :) – Lucas

Verwandte Themen