Wydaje się to głupie, ale nie udało mi się uzyskać wartości w formacie #/####
, aby napisać jako ciąg literowy, a nie zostać sformatowany jako data w programie Excel .Zachowaj format komórki celowej jako tekst z danymi typu "data jak"
Używam ClosedXML napisać do programu Excel, a przy użyciu następujących:
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).DataType = XLCellValues.Text;
tableRow.Cell(1).Value = "2/1997";
// snip
Patrząc na wyjściu excel arkusz mam w komórce 2/1/1997
- chociaż ja ustawiania formatu w postaci tekstu kod, otrzymuję go jako "Data" w arkuszu Excela - sprawdziłem to, klikając komórkę prawym przyciskiem myszy, formatując komórkę, widząc "datę" jako format.
Jeśli zmienię rzeczy do:
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).Value = "2/1997";
tableRow.Cell(1).DataType = XLCellValues.Text;
// snip
I zamiast dostać 35462
jak moim wyjściu.
Po prostu chcę, aby moja wartość literalna 2/1997
była wyświetlana w arkuszu roboczym. Proszę doradzić, jak poprawić.
To zadziałało, ale czy ktoś może skomentować, dlaczego to działa? – jaredbaszler
Byłem również w stanie przyciąć kod powyżej do tego wiedząc, że moja 'fieldValue' była już ciągiem: ' ws.Cell (rowCounter, colCounter) .SetValue (fieldValue); ' – jaredbaszler
@jaredbaszler jest to udokumentowane w Wiki dla ClosedXML. Jeśli ustawisz wartość za pomocą komórki.Value = blah zawsze wykonuje automatyczną konwersję wartości, więc automatycznie rozpoznaje ciąg jako datę i konwertuje go (podobnie jak Excel denerwująco robi z plikami CSV domyślnie). Jednak komórka.SetValue() w szczególności unika tego, a jeśli wartość jest łańcuchem, pozostaje ciągiem w pliku Excel. –