Retour chariot et ReadAlllines [Résolu]

Signaler
Messages postés
21
Date d'inscription
vendredi 7 décembre 2018
Statut
Membre
Dernière intervention
7 juin 2021
-
Messages postés
16020
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
-
Bonjour,
Mon logiciel fonctionne avec des fichiers csv.
J'arrive a les gérer avec des retour chariots dans les champs (en utilisant les ")
mais quand j'ouvre mon csv avec readalllines, il ne veut rien savoir et considère ce retour chariot (ou line feed, peu importe) comme la fin de l'enregistrement.

Quelqu'un a une solution ?

D'avance merci.

4 réponses

Messages postés
16020
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
549
Alors pour commencer , vbcrlf c'est pas du VB.Net, c'est un "reste" de VB6.
En VB.Net, c'est Environement.NewLine.

Je viens de tester ceci
File.WriteAllText("test.csv", "Test;Test2;""Test" & Environment.NewLine & "multiligne"";test4" + Environment.NewLine & "Ligne2;ligne22;ligne23;ligne24")


Excel me reconnait bien une cellule avec 2 lignes, mais si j'ouvre le fichier avec Notepad++, "il se fait avoir"


Il y a bien 3 lignes affichées et elles sont toutes séparées par CR LF.

Si on fait l'inverse, c'est à dire créer le fichier csv avec Excel et Alt+Entrée pour la cellule multitigne


Notepad++ affiche toujours 3 lignes, mais

Il y'a juste LF à la fin dans la cellule multiligne.

Il suffit donc de lire tout le texte et de le découper par CR LF
Dim lignes As String() = File.ReadAllText("Classeur1.csv").Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)


Ta solution consiste donc à ne mettre qu'un LF dans tes champs multilignes
    Dim c As Char = Convert.ToChar(10)
    File.WriteAllText("test.csv", "Test;Test2;""Test" & c.ToString() & "multiligne"";test4" & Environment.NewLine & "Ligne2;ligne22;ligne23;ligne24")
    Dim lignes As String() = File.ReadAllText("test.csv").Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
16020
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
549
Bonjour

peux tu poster un exemple représentatif et sans données confidentielles de ton csv, en utilisant les balises de code pour forcer en xml (ça sera mieux que rien)
Ainsi que le code qui te permet d'écrire ce csv, cette fois en forçant basic
Messages postés
21
Date d'inscription
vendredi 7 décembre 2018
Statut
Membre
Dernière intervention
7 juin 2021
1
Mon fichier csv est du genre :
champ1;"champ2 & vbcrlf & ligne2";champ3...

pour écrire le csv, j'écris mes données stockées dans un tableau avec la méthode
fichier.WriteLine(chaine)
Messages postés
16020
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juin 2021
549
Ha j’ai oublié le lien pour les balises de codes…
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code