Importation de CSV avec sauts de ligne dans Excel 2007

129

Je travaille sur une fonctionnalité pour exporter les résultats de la 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 guillemets, etc. Afin de contrer cela, j'ai entouré le champ de guillemets doubles (").

Cependant, lorsque j'importe les données dans Excel 2007, définissez le délimiteur approprié et définissez le qualificatif de texte sur guillemet double, les sauts de ligne créent toujours de nouveaux enregistrements aux sauts de ligne, où je m'attendrais à voir tout le champ de texte dans un unicellulaire.

J'ai aussi essayé de remplacer CR / LF (\ r \ n) par juste CR (\ r), et encore une fois par juste LF (\ n), mais pas de chance.

Quelqu'un d'autre a-t-il rencontré ce problème, et si oui, comment l'avez-vous résolu?

TIA,
-J

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

ID, nom, description
"12345", "Smith, Joe", "Hey.
Mon nom est Joe."

Lorsque j'importe cela dans Excel 2007, je me retrouve avec une ligne d'en-tête et deux enregistrements. Notez que la virgule dans "Smith, Joe" est gérée correctement. Ce ne sont que les sauts de ligne qui causent des problèmes.

Jeremyalan
la source
J'ai regardé le fichier CSV dans Notepad ++, et tout semble être correct. J'ai d'autres champs avec des virgules et ils sont importés correctement. Ce ne sont que les sauts de ligne qui causent des problèmes.
jeremyalan
4
J'ai des problèmes avec les fichiers .csv UTF8 avec des données multilignes et Excel. J'ai fini par télécharger le fichier sur Google Docs, l'ouvrir dans une feuille Google, puis le télécharger en tant que fichier .xls. Fonctionne bien pour moi de cette façon.
creuzerm

Réponses:

53

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 en codage UTF-8 et contient des nouvelles lignes dans certaines cellules. Si j'ouvre ce fichier à partir du menu Fichier-> Ouvrir d'Excel, l'assistant "import CSV" apparaît et le fichier ne peut pas être correctement importé: les retours à la ligne commencent une nouvelle ligne même lorsqu'ils sont cités. Si j'ouvre ce fichier en double-cliquant dessus dans une fenêtre de l'Explorateur, alors il s'ouvre correctement sans l'intervention de l'assistant.

J Ashley
la source
1
Une idée comment obtenir les mêmes paramètres qu'avec un double-clic?
Michiel Thalen
7
C'est vrai! Comme c'est étrange.
David
5
Si vous utilisez les paramètres régionaux allemands, vous devez utiliser le point-virgule (;) au lieu de la virgule (,) dans votre csv pour que le double-clic fonctionne ...
user1859022
3
cela n'a pas fonctionné pour moi. Avec "," comme délimiteur, il a ouvert tout dans une colonne avec un double-clic. Avec ";" comme délimiteur, il a été importé correctement à l'exception des champs de texte multilignes, qui ont été importés sous forme de plusieurs enregistrements. J'ai Excel 2010
Andrej Adamenko
2
@ user1859022 Je double cela pour les paramètres régionaux hongrois. en fait, tout paramètre régional qui utilise une virgule comme séparateur décimal doit utiliser un point-virgule comme séparateur de champ pour que le double-clic csv ouvert fonctionne correctement
robotik
42

Aucune des solutions suggérées n'a fonctionné pour moi.

Ce qui fonctionne réellement (avec n'importe quel encodage):

Copiez / collez les données du fichier csv (ouvert dans l'éditeur), puis exécutez "texte dans les colonnes" -> ne fonctionne pas, d'accord.

Allez à l'onglet suivant et copiez / collez à nouveau (la même chose que vous avez déjà dans votre presse-papiers) -> fonctionne automatiquement maintenant.

sdplus
la source
2
Dans mon cas, cela a fonctionné, d'une certaine manière: il a correctement réduit le CSV aux enregistrements uniques, mais a supprimé toutes les données d'un champ au-delà de la nouvelle ligne.
Lilienthal
1
Cela a fonctionné, des idées pourquoi cela ne fonctionne pas lors de l'importation du csv d'Excel?
Rafael Sisto
1
Je peux confirmer que cela fonctionne, vous pouvez même coller plus de données dans différentes feuilles sans répéter la commande "texte vers colonnes". Ceci est utile si vous devez importer plusieurs fichiers.
Alex
1
Pourquoi cela fonctionne-t-il mais ni ouvrir le CSV ni l'ajouter en tant que données texte avec tous les paramètres appropriés ne fonctionne pas? Merci pour le conseil. L'équipe Copier / Coller doit parler à l'équipe d'importation de données!
alexGIS
2
Putain de merde. cela fonctionne vraiment. et cela a un peu de sens pourquoi. Lors de la création d'un «texte en colonnes», Excel se souvient des paramètres et se transformera automatiquement. Lorsque le texte est déjà séparé en lignes, il apparaîtra ligne par ligne et ignorera les nouvelles lignes. Je pense que MS devrait inclure une case à cocher pour conserver le comportement ou réanalyser les données. Je m'en fiche, ... si ça marche
user853710
28

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 celle-ci que n'importe quelle version d'Excel que j'ai essayée, et il peut enregistrer au format XLS ou XLSX si nécessaire si vous devez transférer vers Excel par la suite.

Mais si vous êtes coincé avec Excel et avez besoin d'une meilleure solution, il semble y avoir un moyen. Cela semble dépendre de la localisation (ce qui semble idiot, à mon humble avis). Je n'ai pas Excel 2007, mais j'ai Excel 2010 et l'exemple donné:

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

ne fonctionne pas. Je l'ai écrit dans le Bloc-notes et j'ai choisi Enregistrer sous ..., 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 points-virgules a fonctionné pour moi, cependant. Je n'ai rien changé d'autre et ça a marché. J'ai donc changé l'exemple pour qu'il ressemble à ceci et j'ai choisi l'encodage UTF-8 lors de l'enregistrement dans le Bloc-notes:

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

Mais il y a un hic! La seule façon dont cela fonctionne est si vous double-cliquez sur le fichier CSV pour l'ouvrir dans Excel. Si j'essaie d'importer des données à partir de texte et que j'ai choisi ce CSV, cela échoue toujours sur les nouvelles lignes entre guillemets.

Mais il y'à un autre hic! Le séparateur de champ de travail (virgule dans l'exemple d'origine, 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 réglé sur les paramètres régionaux anglais britanniques, et sur cet ordinateur, le premier exemple avec un séparateur par virgule fonctionne très bien (uniquement en double-clic), et celui avec un point-virgule échoue! Voilà pour l'interopérabilité. Si vous souhaitez publier ce CSV en ligne et que les utilisateurs peuvent avoir Excel, je suppose que vous devez publier les deux versions et suggérer aux gens de vérifier 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 enregistré au format UTF-8 avec une nomenclature, ce que fait le Bloc-notes lorsque vous choisissez UTF-8. J'ai essayé UTF-8 sans BOM (peut être commuté facilement dans Notepad ++), mais le double-clic sur le document échoue.
  2. Vous devez utiliser une virgule ou un séparateur point-virgule, mais pas celui qui est le séparateur décimal dans vos paramètres régionaux. Peut-être que d'autres personnages fonctionnent, mais je ne sais pas lesquels.
  3. Vous devez citer les champs qui contiennent une nouvelle ligne avec le caractère ".
  4. J'ai utilisé des fins de ligne Windows (\ r \ n) à la fois dans le champ de texte et comme séparateur d'enregistrement, cela fonctionne.
  5. Vous devez double-cliquer sur le fichier pour l'ouvrir, l'importation de données à partir de texte ne fonctionne pas.

J'espère que cela aide quelqu'un.

kétil
la source
De plus, l'astuce mentionnée par @sdplus semble fonctionner! Je pense que ce qui se passe, c'est que lorsque vous collez pour la première fois et effectuez une manœuvre "texte vers colonnes", vous configurez les éléments de citation et de séparateur de champ dans Excel. La deuxième fois que vous collez, il utilise cette configuration et divise correctement les données en colonnes en fonction de la configuration. Mais cela semble être une approche très manuelle.
ketil
oui, chaque fois que vous importez du texte ou effectuez un texte dans une colonne, vous recalibrez le fonctionnement du copier / coller dans la session donnée. il est même appliqué aux nouveaux classeurs que vous créez, jusqu'à ce que vous fermiez Excel. cela peut aussi être frustrant. une fois que vous utilisez un séparateur donné pour l'importation, il séparera votre texte par celui-ci même si vous souhaitez simplement coller une phrase dans une cellule. vous devez refaire l'importation avec l'onglet comme séparateur, ou redémarrer Excel pour l'arrêter.
robotik
Votre astuce semble vraiment fonctionner. Mais il semble que le point-virgule n'a rien à voir avec la solution. Le problème est qu'Excel traite les fichiers CSV différemment, en fonction des paramètres régionaux. Je viens d'Allemagne, et pour moi, les fichiers CSV d'Excel ont toujours des points-virgules au lieu de virgules (la raison en est qu'en Allemagne, le séparateur décimal est une virgule au lieu d'un point). La vraie solution semble être qu'Excel charge les fichiers CSV de manière totalement différente de tous les autres fichiers texte. Ainsi, les fichiers CSV contenant des sauts de ligne entre les citations semblent fonctionner. Tous les autres fichiers texte ne le font pas.
Martini Bianco
@Martini, oui, j'ai le norvégien Excel et nous utilisons également la virgule comme séparateur décimal, j'ai donc mentionné comment cela dépend des paramètres régionaux (bien que je l'ai appelé la locale). Je devrais peut-être reformuler pour plus de clarté.
ketil
C'est la réponse pour toutes les personnes vivant dans des régions où la virgule est le séparateur décimal. Notez que pour ces régions, Excel utilise également le point-virgule comme séparateur d'argument de formule ( =FOO(1;2)au lieu de =FOO(1,2)), mais il est clairement incorrect qu'Excel l'applique à un analyseur de format de fichier (quel autre programme analyse un format de fichier standard dépendant des paramètres régionaux ??? )
leemes
25

J'ai enfin trouvé le problème!

Il s'avère que nous écrivions le fichier en utilisant l'encodage Unicode, plutôt qu'en ASCII ou UTF-8. La modification de l'encodage sur le FileStream semble résoudre le problème.

Merci à tous pour toutes vos suggestions!

Jeremyalan
la source
29
L'encodage ASCII n'a pas semblé résoudre le problème pour moi (sur MacOS cependant), et je n'ai pas d'espace au début et mon champ est cité. Le même document est importé correctement dans Google Docs. Comme c'est frustrant. BTW, il n'existe pas de fichier texte encodé "Unicode". Il doit s'agir de l'une des implémentations d'Unicode (UTF-8, UTF-16, UTF-32, etc.)
Ben
11
Merci pour la solution. J'étais toujours curieux de savoir quelle est la réponse, alors j'ai essayé de créer un csv avec un saut de ligne dans Excel et de voir ce qu'il enregistrait. Il s'avère qu'Excel utilise uniquement un saut de ligne pour une nouvelle ligne dans une cellule. Si j'essaye de créer le même csv dans le Bloc-notes, il utilisera un saut de ligne + retour chariot pour le saut de ligne. Donc, pour les sauts de ligne dans une seule cellule, assurez-vous qu'il n'utilise qu'un saut de ligne (LF ou \ n) et non un retour chariot (CR ou \ r). Excel utilise les deux pour terminer une ligne.
xr280xr
1
L'encodage ASCII n'a pas non plus résolu le problème pour moi - Excel 2000, Windows 7.
ChrisJJ
1
Pour OS X sur Macintosh, enregistrez-le sous «Windows Comma Separated (csv)». Cela ajoute des nouvelles lignes au lieu de sauts de ligne. Il sera répertorié dans le menu déroulant des formats sous "Formats spécialisés".
taco le
Quel encodage Unicode doit être utilisé (UTF-8, UTF-16)?
Andrej Adamenko
7

Réponse courte

Supprimez les caractères de saut de ligne / saut de ligne ( \navec Notepad ++). Excel reconnaîtra toujours le caractère de retour chariot ( \r) pour séparer les enregistrements.

Longue réponse

Comme mentionné, les caractères de nouvelle ligne sont pris en charge dans les champs CSV, mais Excel ne les gère pas toujours correctement. J'ai rencontré un problème similaire avec un CSV tiers qui avait peut-être des problèmes d'encodage mais qui ne s'est pas amélioré avec les modifications d'encodage.

Ce qui a fonctionné pour moi a été de supprimer tous les caractères de nouvelle ligne ( \n). Cela a pour effet de réduire 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 chariot.

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

Lilienthal
la source
1
J'ai eu la situation inverse: \nentre les lignes et les \r\nvaleurs intérieures. Je viens de dépouiller ce dernier dans Notepad ++.
Rarst
5

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

  • Un caractère de nouvelle ligne ("\ n") dans la chaîne entre guillemets

  • Un retour chariot et une nouvelle ligne entre chaque ligne.

Par exemple, "Test", "Élément multiligne \ n Élément multiligne" \ r \ n "Test2", "Élément multiligne \ n Élément multiligne" \ r \ n

J'ai utilisé notepad ++ pour délimiter correctement chaque ligne et pour n'utiliser que des retours à la ligne dans la chaîne. J'ai découvert cela en créant des entrées multilignes dans un document Excel vierge et en ouvrant le csv dans notepad ++.

Iventio
la source
cela a fonctionné pour moi avec seulement le caractère de nouvelle ligne à la fois comme élément multiligne et comme séparateur de ligne, une fois que j'ai défini le séparateur de champ en fonction de mes paramètres régionaux
robotik
4

Si le champ contient un espace de début, Excel ignore le guillemet double en tant que qualificatif de texte. La solution consiste à éliminer les espaces de début entre la virgule (séparateur de champ) et les guillemets doubles. Par exemple:

Cassé:
Nom, Titre, Description
"Jean", "M.", "Ma description détaillée"

Travail:
Nom, Titre, Description
"John", "Mr.", "Ma description détaillée"

Jérémie
la source
2
Je suis d'accord, cependant, je n'ai pas d'espaces de début dans ma sortie. Des idées?
jeremyalan
nous avons besoin de la ligne cassée :(
Luc
4

Utilisez Google Sheets et importez le fichier CSV.

Ensuite, vous pouvez exporter cela pour l'utiliser dans Excel

Mazzy
la source
1
Bon conseil! C'est la méthode de conversion la plus pratique si vous êtes d'accord avec le téléchargement de votre CSV vers un service tiers (c'est-à-dire des données non confidentielles). Notez que vous devrez peut-être définir manuellement le délimiteur lors de l'importation. Et vous devrez peut-être ajuster la taille de la cellule dans le fichier Excel résultant pour qu'il s'affiche correctement.
m000
Fonctionne également avec Excel dans Office 365 dans un navigateur. Je ne pouvais pas ouvrir correctement un CSV avec des sauts de ligne à l'intérieur des cellules avec l'application de bureau Excel (en essayant la plupart des suggestions de cette page), mais Excel sur office.com pourrait l'ouvrir correctement.
georg w.
3

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

1) Installez LibreOffice 2) Ouvrez Calc et importez le fichier 3) Mon fichier txt avait les champs séparés par, et les champs de caractères inclus dans "4) Enregistrer en tant que fichier ODS 5) Ouvrir le fichier ODS dans Excel 6) Enregistrer sous .xls (x) 7) Terminé.8) Cela a parfaitement fonctionné pour moi et m'a sauvé BIGTIME!

Rock Rico
la source
3
pas besoin d'enregistrer au format ODS, LibreOffice peut enregistrer xls (x) nativement
robotik
2

Collez dans Notepad ++, sélectionnez Encoding> Encode in ANSI, copiez tout à nouveau et collez dans Excel :)

Aaron Dake
la source
2

J'avais un problème similaire. J'avais des données Twitter dans MySQL. Les données avaient un saut de ligne (LF ou \ n) avec dans les données. J'avais besoin d'exporter les données MySQL dans Excel. Le LF gâchait mon importation de fichier csv. Alors 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

REMARQUE- Lors du remplacement de CRLF ou LF, n'oubliez pas de cocher Excended (\ n, \ r, \ t ... Case à cocher [regardez en bas à gauche de la boîte de dialogue)

Dibs
la source
2

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 depuis l'explorateur. ne l'ouvrez pas depuis Excel
pingouinshark
la source
1

Excel est incroyablement cassé lorsqu'il s'agit de CSV. LibreOffice fait un bien meilleur travail. Alors, j'ai découvert que:

  • Le fichier doit être encodé en UTF-8 avec BOM, alors considérez ceci pour tous les points ci-dessous
  • Le meilleur résultat, 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, cela fonctionnera très probablement
    • S'il contient des caractères non ASCII, cela gâchera vos sauts de ligne
  • Il semble dépendre fortement du séparateur décimal configuré dans les paramètres régionaux du système d'exploitation, vous devez donc sélectionner le bon
  • Je parierais qu'il peut également se comporter différemment selon le système d'exploitation et la version d'Office
indéfini
la source
Vous affirmez que LibreOffice est un meilleur devineur qu'Excel, non? Excel pose toutes les bonnes questions lors de l'importation de fichiers texte, à moins que vous ne lui disiez de deviner.
Tom Blodget
1
Merci! Cela m'aide à convertir mon CSV de "UTF-8 sans BOM" à "UTF-8 avec BOM" (juste un simple "UTF-8" dans le menu) par Notepad ++. Ensuite, je l'ai juste ouvert à partir d'Explorateur et Excel l'a montré de manière appropriée avec des symboles corrects et des sauts de ligne corrects à l'intérieur des cellules. Lorsque je l'ai ouvert dans le codage par défaut "UTF-8 sans BOM" à partir d'Explorer, Excel a importé correctement les sauts de ligne, mais affiche les symboles non latins de la mauvaise manière. Si je l'ai ouvert à partir d'Excel, il montrait l'encodage de la bonne manière, mais ne supportait pas les sauts de ligne.
Sergey Beloglazov
1

Aperçu

Près de 10 ans après la publication originale, Excel ne s'est pas amélioré dans l'importation de fichiers CSV. Cependant, j'ai trouvé qu'il était beaucoup mieux d'importer des tableaux HTML. Ainsi, on peut utiliser Python pour convertir CSV en HTML, puis importer le HTML résultant dans Excel.

Les avantages de cette approche sont les suivants: (a) elle fonctionne de manière fiable, (b) vous n'avez pas besoin d'envoyer vos données à un service tiers (par exemple, Google Sheets), (c) aucune installation "lourde" supplémentaire requise (LibreOffice, Nombres, etc.) pour la plupart des utilisateurs, (d) niveau plus élevé que de se mêler des caractères CR / LF et des marqueurs de nomenclature, (e) pas besoin de jouer avec les paramètres régionaux.

Pas

Les étapes suivantes peuvent être exécutées sur n'importe quel shell de type bash tant que Python 3 est installé. Bien que Python puisse être utilisé pour lire directement CSV, csvkit est utilisé pour effectuer une conversion intermédiaire en JSON. Cela nous permet d'éviter d'avoir à gérer les subtilités CSV dans notre code Python.

Tout d'abord, enregistrez le script suivant sous json2html.py. Le script lit un fichier JSON à partir de stdin et le vide sous forme de tableau HTML:

#!/usr/bin/env python3
import sys, json, html

if __name__ == '__main__':
    header_emitted = False
    make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
    make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
    make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
    print("<html><body>\n<table>")
    for line in json.load(sys.stdin):
        lk, lv = zip(*line.items())
        if not header_emitted:
            print(make_tr(lk, make_th))
            header_emitted = True
        print(make_tr(lv, make_td))
    print("</table\n</body></html>")

Ensuite, installez csvkit dans un environnement virtuel et utilisez csvjsonpour alimenter le fichier d'entrée dans notre script. C'est une bonne idée de désactiver la prédiction du type de cellule avec l' -Iargument:

$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html

Maintenant, output.htmlpeut être importé dans Excel. Les sauts de ligne dans les cellules seront conservés.

Vous pouvez éventuellement nettoyer votre environnement virtuel Python:

$ deactivate
$ rm -rf pyenv
m000
la source
1

Ceci est pour Excel 2016:

J'ai juste eu le même problème avec les sauts de ligne dans un fichier csv avec l'assistant Excel.

Ensuite, je l'ai essayé avec la fonctionnalité "Nouvelle requête": Données -> Nouvelle requête -> À partir d'un fichier -> À partir de CSV -> Choisissez le fichier -> Importer -> Charger

Cela fonctionnait parfaitement et une solution de contournement très rapide pour vous tous qui avez le même problème.

SaSH_17
la source
0

Ce qui a juste fonctionné pour moi, importer directement dans Excel à condition que l'importation se fasse au format texte plutôt qu'au format csv. M /

Martin
la source
0

créez simplement une nouvelle feuille avec des cellules avec saut de ligne, enregistrez-la dans csv puis ouvrez-la avec un éditeur qui peut 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 tandis qu'une "vraie" fin de ligne est un code avec CR LF. Voilà, vous savez maintenant comment générer un fichier csv "correct" pour Excel.

dépassage
la source
0

J'ai aussi eu ce problème: c.-à-d., Les fichiers csv (délimités par des virgules, chaînes délimitées par des guillemets doubles) avec LF 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 sous forme de fichiers texte, importés en tant que "depuis HTML". Cette fois, il a ignoré les LF dans les chaînes entre guillemets.

user3861859
la source
0

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 de la cellule a1 \ r 3ème ligne de la cellule a1", "cellule b1", "1ère ligne de la cellule c1 \ r 2ème ligne de la cellule c1" \ n "première ligne de cellule a2 "\ n '

file.write (données)

2003G35
la source
0

Sur MacOS, essayez d'utiliser les nombres

Si vous avez accès à Mac OS, j'ai trouvé que la feuille de calcul Apple Numbers fait un bon travail pour décoller un fichier CSV multiligne complexe qu'Excel ne pourrait pas gérer. Ouvrez simplement le .csvavec des nombres, puis exportez vers Excel.

Tim
la source
0

Dans mon cas, ouvrir CSV dans notepad ++ 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

adax2000
la source
0

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

Ionut
la source
Essayez ceci sur de gros fichiers :)
chukko
-1

Les sauts de ligne entre guillemets doubles conviennent parfaitement à 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 sur virgule (Région et langue »Formats» Avancé) Source: /superuser/238944/how-to-force-excel-to-open-csv-files- avec-données-disposées-en-colonnes # answer-633302

  2. Mac: besoin de changer la région en États-Unis (puis de modifier manuellement les autres paramètres selon vos préférences) 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 complètement Excel avant de réessayer.

J'ai répliqué avec succès le problème et j'ai pu le résoudre en utilisant ce qui précède dans Max et Windows.

David Avikasis
la source
Je ne pense pas que cela fonctionne. J'ai exporté un CSV avec des sauts de ligne dans les cellules d'Excel lui-même. Étant donné que les paramètres régionaux n'ont pas changé, Excel aurait dû être en mesure de le charger correctement. Mais ça ne peut pas. Cela perturbe toujours les sauts de ligne dans les cellules.
m000