Importation de CSV avec sauts de ligne dans Excel 2007

je travaille sur une fonctionnalité pour exporter des résultats de recherche dans 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 contrer cela, j'ai mis le champ entre guillemets (").

cependant, quand J'importe les données dans Excel 2007, fixe le délimiteur approprié, et place le qualificatif de texte à double citation, les sauts de ligne créent encore de nouveaux enregistrements aux sauts de ligne, où je m'attends à voir l'ensemble du champ de texte dans une cellule unique.

j'ai également essayé de remplacer CR/LF (rn) Par juste CR (R), et encore avec juste LF (n), Mais Pas de chance.

quelqu'un d'autre A rencontré ce problème, et si oui, comment avez-vous résolu ce problème?

TIA,

- 151910920"

EDIT:

Voici un fichier rapide que j'ai écrit à la main pour dupliquer problème.

ID,Nom,Description

"12345", "Smith, Joe", " Hey.

Mon nom est Joe."

quand J'importe ceci dans Excel 2007, je finis avec une ligne d'en-tête, et deux enregistrements. Notez que la virgule dans "Smith, Joe" est manipulée correctement. C'est juste les sauts de ligne qui causent des problèmes.

Espère que ça aide.

89
demandé sur Martin Schröder 2010-04-19 19:31:14

19 réponses

Excel (au moins dans Office 2007 sur XP) peut se comporter différemment selon qu'un fichier CSV est importé en l'ouvrant à partir du menu Fichier->Ouvrir ou en double-cliquant sur le fichier dans L'Explorateur.

j'ai un fichier CSV qui est codé en UTF-8 et qui contient des nouvelles lignes dans certaines cellules. Si j'ouvre ce fichier à partir du menu Fichier->Ouvrir D'Excel, l'Assistant "Importer CSV" apparaît et le fichier ne peut pas être correctement importé: les nouvelles lignes démarrent une nouvelle ligne même lorsqu'elles sont citées. Si j'ouvre ce fichier en double-cliquant dessus dans une fenêtre D'explorateur, puis il s'ouvre correctement sans l'intervention de l'Assistant.

41
répondu J Ashley 2014-03-20 20:39:27

aucune des solutions proposées n'a fonctionné pour moi.

Ce qui fonctionne réellement (avec un codage):

copier / coller des données de csv-file (ouvrir dans L'éditeur), puis effectuer "texte dans les colonnes" --> ne fonctionne pas, tout droit.

aller à l'onglet suivant et copier/coller à nouveau (même chose que ce que vous avez déjà dans votre presse-papiers) --> fonctionne automatiquement maintenant.

27
répondu sdplus 2013-09-17 12:27:36

j'ai enfin trouvé le problème!

il s'avère que nous écrivions le fichier en utilisant L'encodage Unicode, plutôt que ASCII ou UTF-8. Changer l'encodage sur la FileStream semble résoudre le problème.

merci à tous pour toutes vos suggestions!

23
répondu jeremyalan 2010-06-21 22:59:53

si vous faites cela manuellement, téléchargez LibreOffice et utilisez LibreOffice Calc pour importer votre CSV. Il fait un bien meilleur travail de choses comme ceci que n'importe quelle version D'Excel que J'ai essayé, et il peut sauver à XLS ou XLSX comme requis si vous avez besoin de transférer à Excel après.

mais si vous êtes coincé avec Excel et avez besoin d'une meilleure correction, il semble y avoir un moyen. Il semble être dépendant du lieu (ce qui semble idiot, à mon humble avis). Je N'ai pas Excel 2007, mais je ont Excel 2010, et l'exemple donné:

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

ne marche pas. Je l'ai écrit dans Bloc-Notes et J'ai choisi Save as... et à côté du bouton Enregistrer, vous pouvez choisir l'encodage. J'ai choisi UTF-8 comme suggéré, mais sans succès. Changer les virgules en point-virgule a fonctionné pour moi, cependant. Je n'ai pas changer quoi que ce soit d'autre, et il a travaillé. J'ai donc changé l'exemple pour ressembler à ceci, et j'ai choisi L'encodage UTF-8 lors de la sauvegarde dans le bloc-notes:

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

But il y a un hic! La seule façon qu'il fonctionne est si vous double-cliquez le fichier CSV pour L'ouvrir dans Excel. Si j'essaie d'importer des données à partir de texte et que je choisis ce CSV, alors il échoue toujours sur les nouvelles lignes citées.

mais il y a une autre attrape! Le séparateur de champ de travail (virgule dans l'exemple original, point-virgule dans mon cas) semble dépendre des paramètres régionaux du système (définis sous Panneau de configuration - > région et langue). En Norvège, la virgule est le séparateur décimal. Excel semble éviter ce caractère et préfère un point-virgule à la place. J'ai accès à un autre ordinateur placé à UK English locale, et sur cet ordinateur, le premier exemple avec un séparateur de virgule fonctionne bien (seulement sur doubleclick), et celui avec point-virgule échoue réellement! Voilà pour l'interopérabilité. Si vous voulez publier ce CSV en ligne et les utilisateurs peuvent avoir Excel, je suppose que vous devez publier les deux versions et de suggérer que les gens vérifient quel fichier donne le nombre correct de lignes.

donc tous les détails que j'ai pu rassembler pour que cela fonctionne sont:

  1. le fichier doit être sauvegardé comme UTF-8 avec un BOM, ce qui est ce que le bloc-notes fait quand vous choisissez UTF-8. J'ai essayé UTF-8 sans BOM (peut être commuté facilement dans le Notepad++), mais puis double-cliquer le document échoue.
  2. Vous devez utiliser une virgule ou un point-virgule séparateur, mais pas celui qui est le séparateur décimal dans vos Paramètres Régionaux. Peut-être d'autres les personnages marchent, mais je ne sais pas lequel.
  3. vous devez citer les champs qui contiennent une nouvelle ligne avec le caractère".
  4. j'ai utilisé Windows ligne terminaisons (\r\n) à la fois dans le champ de texte et un séparateur d'enregistrement, qui fonctionne.
  5. vous devez double-cliquer le fichier pour l'ouvrir, importer des données à partir de texte ne fonctionne pas.

Espérons que cela aide quelqu'un.

19
répondu ketil 2017-09-29 08:11:26

si le champ contient un espace principal, Excel ne tient pas compte de la double citation comme qualificatif du texte. La solution est d'éliminer les espaces de tête entre la virgule (séparateur de champ) et double citation. Par exemple:

cassé:

Nom,Titre, Description

"John", "M.", "description détaillée"

"151900920 de Travail":

Nom,Titre, Description

"John","M.","description détaillée"

5
répondu Jeremy 2010-04-23 22:38:06

Réponse Courte

supprimer les caractères newline/linefeed ( \n avec le bloc-notes++). Excel reconnaîtra toujours le caractère de retour de chariot ( \r ) pour séparer les enregistrements.

Longue Réponse

comme mentionné, les caractères newline sont supportés dans les champs CSV mais Excel ne les gère pas toujours avec élégance. J'ai fait face à un problème similaire avec un tiers CSV qui a peut-être eu des problèmes d'encodage, mais n'a pas amélioré avec des changements d'encodage.

ce qui a fonctionné pour moi était de supprimer tous les caractères newline ( \n ). Cela a pour effet d'affaisser les champs en un seul enregistrement en supposant que vos enregistrements sont séparés par la combinaison d'un retour chariot et d'une nouvelle ligne (CR/LF). Excel importera alors correctement le fichier et reconnaîtra les nouveaux enregistrements par le retour de chariot.

de toute évidence, une solution plus propre consiste à remplacer d'abord les vraies nouvelles lignes ( \r\n ) par une combinaison temporaire de caractères, en remplaçant les nouvelles lignes ( \n ) par le caractère séparé de votre choix (par exemple, virgule dans un fichier en point-virgule), puis en remplaçant les caractères temporaires par des nouvelles lignes appropriées.

5
répondu Lilienthal 2016-07-28 11:53:43

+1 sur le commentaire de J Ashley. J'ai rencontré ce problème également. Il s'avère que Excel exige:

  • un caractère newline ("\n") dans la chaîne de caractères Citée

  • un retour chariot et Un saut de ligne entre chaque ligne.

E. G. "Test", "Multi-item\n article multiligne " \r\n "Test2", "Multi-item\n article multiligne "\r\n

j'ai utilisé le bloc-notes ++ pour délimiter chaque ligne correctement et pour n'utiliser que les nouvelles lignes dans la chaîne. On a découvert cela en créant des entrées multilignes dans un fichier excel doc vierge et en ouvrant le csv dans le bloc-notes ++.

4
répondu Iventio 2015-09-10 23:16:14

coller dans Notepad++, sélectionner Encoding > Encoder dans ANSI, copier de nouveau et coller dans Excel:)

2
répondu Aaron Dake 2015-06-19 19:59:21

si quelqu'un trébuche sur ce fil et cherche une réponse définitive ici va (crédit à la personne mentionnant LibreOffice:

1) Installer LibreOffice 2) Ouvrir le fichier Calc et importer 3) mon fichier txt avait les champs séparés par , et les champs de caractères inclus dans " 4) enregistrer dans le fichier ODS 5) ouvrir le fichier ODS en Excel 6) Enregistrer sous .xls(x) 7) fait. 8) cela a fonctionné parfaitement pour moi et m'a sauvé grand temps!

2
répondu Rock Rico 2015-12-03 12:57:31

mon expérience avec excel 2010 sur WinXP avec les paramètres régionaux français

  • le séparateur de votre csv importé doit correspondre au séparateur de liste de vos paramètres régionaux (; dans mon cas)
  • vous devez double-cliquer sur le fichier de l'explorateur (ne l'ouvrez pas à partir D'Excel)
1
répondu pingouinshark 2016-07-28 14:02:34

j'ai eu un problème similaire. J'avais des données twitter sur MySQL. Les données ont eu la ligne d'alimentation (LF ou \n) Avec dans les données. J'avais l'obligation d'exporter les données MySQL dans excel. Le LF gâchait mon importation de fichier csv. Donc j'ai fait ce qui suit -

1. From MySQL exported to CSV with Record separator as CRLF
2. Opened the data in notepad++ 
3. Replaced CRLF (\r\n) with some string I am not expecting in the Data. I used ###~###! as replacement of CRLF
4. Replaced LF (\n) with Space
5. Replaced ###~###! with \r\n, so my record separator are back.
6. Saved and then imported into Excel

NOTE-en remplaçant CRLF ou LF n'oubliez pas de vérifier Excended (\n,\r,\t... Case à cocher [regarder en bas à gauche de la boîte de dialogue)

1
répondu Dibs 2017-04-26 15:14:42

ce qui vient de marcher pour moi, importer dans Excel directement pourvu que l'importation soit faite en format texte plutôt qu'en format csv. M /

0
répondu Martin 2016-08-21 14:41:43

il suffit de créer une nouvelle feuille avec des cellules avec linebreak, la sauvegarder dans csv puis l'ouvrir avec un éditeur qui peut afficher les caractères de fin de ligne (comme le bloc-notes++). En faisant cela, vous remarquerez qu'un linebreak dans une cellule est codé avec LF alors qu'un "vrai" end of line est codé avec CR LF. Voilà, maintenant vous savez comment générer un fichier csv" correct " pour excel.

0
répondu depassage 2017-02-14 16:56:39

j'ai aussi eu ce problème: ie., fichiers csv (délimité par des virgules, des guillemets doubles délimité par des chaînes) avec la FL dans les chaînes entre guillemets. Ce sont des fichiers carrés téléchargés. J'ai fait une importation de données mais au lieu d'importer en tant que fichiers texte, j'ai importé en tant que "à partir de HTML". Cette fois, il a ignoré les LF dans les cordes citées.

0
répondu user3861859 2017-05-02 17:49:27

cela a fonctionné sur Mac, en utilisant csv et l'ouverture du fichier dans Excel.

utilisant python pour écrire le fichier csv.

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

"151900920 de fichier".write (data)

0
répondu 2003G35 2017-07-07 01:58:42

sur MacOS essayez d'utiliser des nombres

si vous avez accès à Mac OS, j'ai trouvé que le tableur Apple nombres fait un bon travail de décompression d'un fichier CSV multi-ligne complexe que Excel ne pourrait pas gérer. Il suffit d'ouvrir le .csv avec des chiffres et ensuite exporter vers Excel.

0
répondu Tim 2018-05-13 14:42:50

dans mon cas ouvrir CSV dans noetpad++ et ajouter SEP="," comme première ligne me permet D'ouvrir CSV avec des sauts de ligne et utf-8 dans Excel sans problèmes

0
répondu adax2000 2018-08-14 07:08:47

remplacer le séparateur par TAB (\t) au lieu de virgule (,). Puis ouvrez le fichier dans votre éditeur (Bloc-notes, etc.), Copiez le contenu à partir de là, puis collez-le dans le fichier Excel.

0
répondu Ionut 2018-09-06 07:06:47
Les sauts de ligne

entre guillemets doubles sont parfaitement bien selon la norme CSV. L'analyse des sauts de ligne dans Excel dépend du paramètre OS du séparateur de liste:

  1. Windows: vous devez définir le séparateur de liste à virgule (région et la langue "Formats" avancés) Source: https://superuser.com/questions/238944/how-to-force-excel-to-open-csv-files-with-data-arranged-in-columns#answer-633302

  2. Mac: besoin de changer la région à nous (puis de modifier manuellement les autres paramètres à votre préférence) Source: https://answers.microsoft.com/en-us/mac/forum/macoffice2016-macexcel/line-separator-comma-semicolon-in-excel-2016-for/7db1b1a0-0300-44ba-ab9b-35d1c40159c6 (voir la réponse de NewmanLee)

n'oubliez pas de fermer Excel complètement avant d'essayer à nouveau.

J'ai réussi à reproduire le problème et j'ai pu le corriger en utilisant ce qui précède dans Max et Windows.

0
répondu David Avikasis 2018-10-04 14:47:37