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.

2voto

undefined Points 632

Excel est incroyablement défaillant lorsqu'il s'agit de traiter des fichiers CSV. LibreOffice fait un bien meilleur travail. J'ai donc découvert que :

  • Le fichier doit être encodé en UTF-8 avec BOM, donc considérer ceci pour tous les points ci-dessous
  • Le meilleur résultat, et de loin, est obtenu en l'ouvrant à partir de l'explorateur de fichiers
  • Si vous l'ouvrez à partir d'Excel, deux résultats sont possibles :
    • S'il ne contient que des caractères ASCII, il est probable qu'il fonctionnera
    • S'il contient des caractères non ASCII, les sauts de ligne seront perturbés.
  • Il semble dépendre fortement du séparateur décimal configuré dans le fichier dans les paramètres régionaux du système d'exploitation, il faut donc choisir le bon.
  • Je parierais qu'il peut également se comporter différemment en fonction du système d'exploitation et de l'environnement. de la version d'Office

1voto

SaSH_17 Points 165

Il s'agit d'Excel 2016 :

Je viens d'avoir le même problème avec les sauts de ligne dans un fichier csv avec l'assistant Excel.

Ensuite, j'ai essayé la fonction "Nouvelle requête" : Données -> Nouvelle requête -> A partir d'un fichier -> A partir d'un CSV -> Choisir le fichier -> Importer -> Charger

Cela fonctionnait parfaitement et c'est une solution très rapide pour tous ceux qui ont le même problème.

1voto

Yannick Points 21

Avec Excel 2019, j'ai eu un problème similaire en travaillant avec des fichiers CSV via Données -> Importer à partir d'un fichier texte / CSV. Une fois que la connexion est établie et que les données sont synchronisées, il a signalé. xx erreur(s) due(s) au décalage des colonnes causé par les sauts de ligne.

J'ai réussi à résoudre ce problème en

  1. Modifier la requête (Requête -> Modifier)

  2. L'éditeur Power Query s'ouvre alors

  3. Allez dans Démarrer -> Editeur avancé

  4. Cela ouvre la requête au format texte, où la ligne 2 contient une instruction du type

    Source = Csv.Document(File.Contents("my.csv"),[Delimiter=",", .... , QuoteStyle=QuoteStyle.None]),

  5. Remplacer QuoteStyle.None par QuoteStyle.Csv

  6. Cliquez sur Terminer

  7. Postuler et fermer

La documentation se trouve ici : https://learn.microsoft.com/en-us/powerquery-m/csv-document

NB. J'ai trouvé depuis l'endroit où cela est "caché" dans l'interface utilisateur. Dans l'éditeur de Power Query, cliquez sur Data source settings, Change source (en bas à gauche), et le combo Line breaks devrait indiquer Ignorer les sauts de ligne entre les guillemets .

NB2. Je travaille à partir d'Excel en néerlandais, de sorte que mes traductions des légendes des boutons, etc. peuvent être un peu erronées.

0voto

Martin Points 1

Ce qui a fonctionné pour moi, c'est l'importation dans Excel directement, à condition que l'importation se fasse au format texte et non au format csv. M/

0voto

depassage Points 1

Il suffit de créer une nouvelle feuille avec des cellules avec saut de ligne, de l'enregistrer au format csv et de l'ouvrir avec un éditeur capable d'afficher les caractères de fin de ligne (comme notepad++). En faisant cela, vous remarquerez qu'un saut de ligne dans une cellule est codé avec LF alors qu'une "vraie" fin de ligne est codée avec CR LF. Voilà, vous savez maintenant comment générer un fichier csv "correct" pour Excel.

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