2 votes

ClosedXML analyse la virgule dans un nombre

Je viens de télécharger ClosedXML pour l'utiliser dans une petite application que je suis en train d'écrire. Dans cette application, je charge des données à partir d'une base de données pour les sortir dans un fichier Excel. Le format local de mes nombres utilise une virgule comme indicateur décimal. Il semble que ClosedXML ne les reconnaisse pas comme des nombres, ce qui fait qu'ils sont enregistrés comme du texte et que je dois les convertir manuellement lorsque j'ouvre le fichier.

J'ai essayé de régler le DataType de la cellule à XLCellValues.Number mais lorsque je le fais, une exception est levée, comme dans le cas suivant "Cannot set data type to Number because '1534,8250' is not recognized as a number." Il semble que cela provienne de l'utilisation par ClosedXML de la fonction CultureInfo.InvariantCulture plutôt que CultureInfo.CurrentCulture .

Existe-t-il un moyen de contourner ce problème, à moins de remplacer toutes les virgules par des points et/ou de recompiler le projet ClosedXML pour qu'il utilise CurrentCulture ?

3voto

toadflakz Points 979

Vous devez toujours stocker les données dans un format spécifique à la culture. La culture ne doit être utilisée que pour présenter les données.

En d'autres termes, la solution correcte consiste à ne pas utiliser les chaînes formatées pour le numéro lors de l'enregistrement au format XML. Excel doit se charger de la présentation du nombre pour la culture spécifique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X