web-dev-qa-db-fra.com

Conserver le format de cellule Excel en tant que texte avec des données de type "date similaire"

Cela semble idiot, mais je n’ai pas pu obtenir mes valeurs au format #/#### pour écrire en tant que chaîne littérale plutôt que de me mettre au format de date dans Excel.

J'utilise ClosedXML pour écrire dans Excel et j'utilise les éléments suivants:

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

En regardant la feuille de sortie Excel que je reçois dans la cellule 2/1/1997 - même si je définis le format en tant que texte en code, je l’obtiens en tant que "Date" dans la feuille de calcul Excel - j’ai vérifié cela en faisant un clic droit sur la cellule, cellule de format, voir "date" comme format.

Si je change les choses jusqu'à:

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

Je reçois plutôt 35462 comme sortie. 

Je veux juste que ma valeur littérale de 2/1997 soit affichée sur la feuille de calcul. S'il vous plaît conseiller sur la façon de corriger.

11
Kritner

essaye ça

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

Considérer:

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

Notez la citation simple.

2
Gary's Student

Pas sûr de partir de ClosedXML, mais peut-être essayer Range.NumberFormat ( MSDN Link )

Par exemple...

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

Ou 

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