152 votes

Importation d'un fichier CSV avec des sauts de ligne dans Excel 2007

Je travaille sur une fonctionnalité permettant d'exporter les résultats de recherche vers un fichier CSV à ouvrir dans Excel. L'un des champs est un champ de texte libre, qui peut contenir des sauts de ligne, des virgules, des citations, etc. Pour éviter cela, j'ai placé le champ entre guillemets (").

Toutefois, lorsque j'importe les données dans Excel 2007, que je définis le délimiteur approprié et que je fixe le qualificateur de texte à un guillemet double, les sauts de ligne créent toujours de nouveaux enregistrements à ces endroits, alors que je m'attendrais à voir l'intégralité du champ de texte dans une seule cellule.

J'ai également essayé de remplacer CR/LF ( \r\n ) avec seulement CR ( \r ), et encore une fois avec seulement LF ( \n ), mais sans succès.

Quelqu'un d'autre a-t-il rencontré ce comportement et, si oui, comment l'a-t-il résolu ?

TIA,
-J

EDIT :
Voici un fichier rapide que j'ai écrit à la main pour reproduire le problème.

ID, nom, description
"12345", "Smith, Joe", "Hey.
Je m'appelle Joe."

Lorsque j'importe ce fichier dans Excel 2007, je me retrouve avec une ligne d'en-tête et deux enregistrements. Notez que la virgule dans "Smith, Joe" est traitée correctement. Ce sont les sauts de ligne qui posent problème.

0voto

user3861859 Points 3

J'ai également rencontré ce problème : des fichiers csv (délimités par des virgules et des guillemets) avec des LF dans les chaînes entre guillemets. Il s'agissait de fichiers Square téléchargés. J'ai fait une importation de données mais au lieu d'importer comme des fichiers texte, j'ai importé comme "à partir de HTML". Cette fois, il a ignoré les LF dans les chaînes de caractères entre guillemets.

0voto

2003G35 Points 54

Cela a fonctionné sur Mac, en utilisant csv et en ouvrant le fichier dans Excel.

Utilisation de python pour écrire le fichier csv.

data= '"première ligne de la cellule a1 \r 2ème ligne dans la cellule a1 \r 3ème ligne de la cellule a1", "cellule b1", "1ère ligne de la cellule c1 \r 2ème ligne dans la cellule c1" \n "première ligne de la cellule a2" \n '

file.write(data)

0voto

adax2000 Points 414

Dans mon cas, j'ai ouvert le fichier CSV dans notepad++ et j'ai ajouté SEP="," comme la première ligne me permet d'ouvrir un fichier CSV avec des sauts de ligne et utf-8 dans Excel sans problème

0voto

Ionut Points 111

Remplacer le séparateur par TAB( \t ) au lieu de la virgule (,). Ouvrez ensuite le fichier dans votre éditeur (Notepad, etc.), copiez-en le contenu, puis collez-le dans le fichier Excel.

0voto

Oliver Gehrmann Points 51

Il semble que cela soit beaucoup plus facile dans les versions plus récentes d'Excel :

  1. Allez dans "Données" -> "Obtenir des données (Power Query)"
  2. Dans la boîte de dialogue qui s'ouvre, sélectionnez à droite "Texte / CSV".
  3. Recherchez le fichier puis cliquez sur "Next" et suivez les recommandations (dans mon cas, Excel a maintenant correctement réalisé qu'il s'agissait d'UTF8 et que les cellules étaient séparées par des " ;" et que l'identifiant du texte était des guillemets doubles (").
  4. Vous avez terminé !

Le chargement a pris un peu de temps, mais j'ai ensuite obtenu un tableau auto-formaté qui était très joli et qui comprenait que les entrées sur plusieurs lignes faisaient toujours partie de la même entrée.

Si vous souhaitez que les lignes multiples s'affichent correctement, il vous suffit de formater les cellules et, sous "Alignement", de cocher la case "Envelopper le texte". Cela devrait résoudre le dernier de vos problèmes.

Bonne chance ! ;-)

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