L'importation de CSV avec des sauts de ligne dans Excel 2007
Je suis en train de travailler sur une fonction pour exporter les résultats de la recherche vers un fichier CSV pour être ouvert dans Excel. L'un des champs est un champ de texte libre, qui peut contenir des sauts de ligne, des virgules, des citations, etc. Afin de contrer cela, j'ai enveloppé le champ de guillemets doubles (").
Cependant, quand j'ai importer les données dans Excel 2007, le délimiteur approprié, et de définir le qualificateur de texte de guillemets doubles, les sauts de ligne sont encore en train de créer de nouveaux enregistrements en les sauts de ligne, où je m'attends à voir l'ensemble du champ de texte dans une cellule unique.
J'ai aussi essayé de remplacer CR/LF (\r\n) avec CR (\r), et, de nouveau, avec juste de 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,
-J
EDIT:
Voici un petit fichier que j'ai écrit à la main pour reproduire le problème.
ID,Nom,Description
"12345","Smith, Joe","Hey.
Mon nom est Joe."
Quand je les importer dans Excel 2007, je me retrouve avec une ligne d'en-tête, et de deux enregistrements. Notez que la virgule dans "Smith, Joe" est manipulé correctement. C'est juste les sauts de ligne qui sont à l'origine des problèmes.
- J'ai regardé le fichier CSV dans Notepad++, et tout semble correct. J'ai d'autres champs par des virgules, et ils sont importés correctement. C'est juste les sauts de ligne qui sont à l'origine des problèmes.
- J'ai des problèmes avec l'UTF8 .les fichiers csv avec plusieurs lignes de données et excel. J'ai fini juste en téléchargeant le fichier Google Docs, de l'ouvrir dans google feuille, puis de les télécharger en tant que .fichier xls. Fonctionne bien pour moi de cette façon.
Vous devez vous connecter pour publier un commentaire.
Excel (au moins dans Office 2007 sur XP) peuvent se comporter différemment selon qu'un fichier CSV importé en l'ouvrant à partir du Fichier->Ouvrir le menu ou en double-cliquant sur le fichier dans l'Explorateur.
J'ai un fichier CSV encodé en UTF-8 et contient des retours à la ligne dans certaines cellules. Si j'ouvre ce fichier à partir d'Excel Fichier->Open menu "import CSV" assistant s'ouvre et le fichier ne peut pas être correctement importés: les retours à la ligne commencer une nouvelle ligne, même quand cité. Si j'ouvre ce fichier en double-cliquant dessus dans une fenêtre de l'Explorateur, puis il s'ouvre correctement, sans l'intervention de l'assistant.
Aucune des solutions proposées a fonctionné pour moi.
De ce qui fonctionne (avec un codage):
Copier/coller des données à partir de fichier csv (ouvrir dans l'Éditeur), puis de réaliser "le texte dans les colonnes" --> ne fonctionne pas, tout droit.
Aller à l'onglet suivant et copier/coller de nouveau (même chose que ce que vous avez déjà dans votre presse-papiers) --> "automagiquement" fonctionne maintenant.
J'ai enfin trouvé le problème!!!!
Il s'avère que nous étions en train d'écrire le fichier en utilisant le codage Unicode, plutôt que de l'ASCII ou UTF-8. Modification de l'encodage sur le FileStream semble résoudre le problème.
Merci à tous pour toutes vos suggestions!
Si vous le faites manuellement, téléchargement LibreOffice et l'utilisation de LibreOffice Calc pour importer un fichier CSV. Il fait un bien meilleur travail que ce genre de choses que n'importe quelle version d'Excel, j'ai essayé, et il peut enregistrer au format XLS ou XLSX, au besoin, si vous avez besoin de transférer vers Excel par la suite.
Mais si vous êtes coincé avec Excel et ont besoin d'un meilleur correctif, il semble y avoir un moyen. Il semble être de paramètres régionaux dépendant (ce qui semble idiot, à mon humble avis). Je n'ai pas Excel 2007, mais j'ai Excel 2010, et l'exemple donné:
ne fonctionne pas. Je l'ai écrit dans le bloc-notes et sélectionnez Enregistrer sous..., et à côté du bouton Enregistrer, vous pouvez choisir l'encodage. J'ai choisi l'UTF-8 comme suggéré, mais avec pas de chance. Changer les virgules aux points-virgules travaillé pour moi, si. Je n'ai pas changer quoi que ce soit d'autre, et il a travaillé. J'ai donc changé l'exemple à ressembler à cela, et a choisi l'encodage UTF-8 lors de l'enregistrement dans le bloc-notes:
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 du texte et a choisi ce format CSV, puis il échoue encore sur les retours à la ligne.
Mais il y a un autre attraper! Le travail de terrain séparateur (virgule dans l'exemple original, un point-virgule dans mon cas) semble dépendre du système les Paramètres Régionaux (mis sous Panneau de configuration -> la Région et de la Langue). En Norvège, la virgule est le séparateur décimal. Excel semble éviter ce personnage et préfèrent un point-virgule à la place. J'ai accès à un autre ordinateur à l'ensemble du royaume-UNI de paramètres régionaux anglais, et sur cet ordinateur, le premier exemple avec une virgule de séparation fonctionne très bien (seulement sur doubleclick), et une avec un point virgule fait ne! Voilà pour l'interopérabilité. Si vous souhaitez publier cet CSV en ligne et les utilisateurs peuvent avoir Excel, je suppose que vous devez publier les deux versions et suggèrent que les personnes vérifiez le fichier qui donne le bon nombre de lignes.
De sorte que tous les détails que j'ai pu recueillir pour obtenir ce travail sont:
Espère que cela aide quelqu'un.
=FOO(1;2)
au lieu de=FOO(1,2)
), mais clairement, il est inexact que Excel applique à un format de fichier parser (autre programme qui analyse un format de fichier standard dépend de la locale???)set :bomb
, btw.Réponse Courte
Supprimer le saut de ligne/caractères de saut de ligne (
\n
avec Notepad++). Excel va encore reconnaître le caractère de retour chariot (\r
) pour séparer des enregistrements.Réponse Longue
Comme mentionné caractères de saut de ligne sont pris en charge à l'intérieur de champs CSV mais Excel ne permet pas toujours de les gérer correctement. J'ai fait face à un problème similaire avec un tiers CSV qui peut-être avait des problèmes de codage, mais n'améliorent pas avec le codage des changements.
Ce qui a fonctionné pour moi a été la suppression de tous les caractères de saut de ligne (
\n
). Cela a pour effet de l'effondrement des champs d'un enregistrement unique en supposant que vos enregistrements sont séparés par la combinaison d'un retour chariot et un saut de ligne (CR/LF). Excel sera alors correctement importer le fichier et de reconnaître de nouveaux enregistrements par le retour chariot.Évidemment une solution plus propre est d'abord de remplacer la vraie retours à la ligne (
\r\n
) avec un caractère temporaire de la combinaison, de remplacer les retours à la ligne (\n
) avec votre séparant caractère de choix (comme la virgule dans un point-virgule fichier) puis en remplaçant temporaire de caractères avec des bon retours à la ligne à nouveau.\n
entre les lignes et\r\n
à l'intérieur de valeurs. Juste dépouillé le dernier dans Notepad++.Si le champ contient un espace, Excel ignore les guillemets doubles comme un délimiteur de texte. La solution est d'éliminer les espaces entre les virgules (séparateur de champ) et double-quote. Par exemple:
Cassé:
Le Nom,Le Titre,La Description
"John", "M.", "Ma description détaillée"
De travail:
Le Nom,Le Titre,La Description
"John","M.","Ma description détaillée"
+1 sur J Ashley commentaire. J'ai rencontré ce problème également. Il s'avère que Excel requiert:
Un caractère de saut de ligne("\n") dans la chaîne de caractères entre guillemets
Un retour chariot et un saut de ligne entre chaque ligne.
E. g.
"Test", "Multi-item\n
multiline élément"\r\n
"Test2", "Multi-item\n
multiline élément"\r\n
J'ai utilisé notepad ++ pour délimiter chaque ligne correctement et d'utiliser seulement des retours à la ligne dans la chaîne. Découvert ce par la création de plusieurs lignes d'entrées dans un espace excel doc et de l'ouverture du fichier csv dans notepad ++.
Coller dans Notepad++, sélectionnez l'Encodage > Encoder en ANSI, copie de tous les nouveau-coller dans Excel 🙂
Si quelqu'un de tomber sur ce fil et est à la recherche d'une réponse définitive ici va (crédit à la personne de mentionner LibreOffice:
1) Installer LibreOffice
2) Ouvrir Calc et d'importation de fichier
3) Mon fichier txt avait le champs séparés par des , et des champs de caractère entre"
4) enregistrer en tant que fichier ODS
5) Ouvrir fichier ODS en Excel
6) Enregistrer sous .xls(x)
7) Faire.
8) Cela a fonctionné parfaitement pour moi et m'a sauvé BIGTIME!
Mon expérience avec Excel 2010 sur WinXP avec les paramètres régionaux français
J'ai eu un problème similaire. J'ai eu quelques données de twitter dans MySQL. Les données ont saut de Ligne( LF ou \n) dans les données. J'ai eu une exigence de l'exportation de la base de données dans excel. La LF a été gâcher mon import de fichier csv. J'ai donc fait la suite -
REMARQUE - bien que le remplacement de CRLF ou LF n'oubliez pas de consulter Excended (\n,\r,\t... Case à cocher [regarder la main gauche en bas de la Boîte de Dialogue)
Utiliser des Feuilles de calcul Google et importer le fichier CSV.
Vous pouvez ensuite exporter que de les utiliser dans Excel
Ce qui vient de se fonctionné pour moi, l'importation dans Excel directement à condition que l'importation est faite comme un format de texte plutôt que le format csv.
M/
il suffit de créer une nouvelle feuille avec les cellules avec saut de ligne, l'enregistrer au format csv, puis de l'ouvrir avec un éditeur de texte 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, alors qu'un "vrai" fin de la ligne de code avec CR /LF. Voilà, maintenant vous savez comment générer une "bonne" fichier csv pour excel.
J'ai aussi eu ce problème: c'est à dire., les 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. Ces fichiers ont été téléchargés Carré fichiers. J'ai fait un import de données, mais au lieu d'importer des fichiers texte, des importées comme "HTML". Cette fois, il a ignoré le LF est dans les chaînes entre guillemets.
Cette travaillé sur Mac, à l'aide de csv et ouvrir le fichier dans Excel.
À l'aide de 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"
fichier.write(data)
Sur MacOS essayez d'utiliser les Numéros de
Si vous avez accès à Mac OS, j'ai trouvé que la Pomme de feuille de calcul Numéros de fait un bon travail de "détricotage" un complexe multi-ligne CSV fichier Excel ne pouvait pas gérer. Il suffit d'ouvrir le
.csv
avec des Chiffres et ensuite exporter vers Excel.Dans mon cas, l'ouverture CSV dans notepad++ et en ajoutant
SEP=","
la première ligne me permet de m'ouvrir CSV avec des sauts de ligne et l'utf-8 dans Excel sans problèmesRemplacer le séparateur avec des tabulations(\t) au lieu d'une virgule(,).
Puis ouvrez le fichier dans votre éditeur de texte (bloc-notes, etc.), copier le contenu à partir de là, puis de la coller dans le fichier Excel.
Les sauts de ligne à l'intérieur de guillemets doubles sont parfaitement bien, selon CSV standard.
L'analyse des sauts de ligne dans Excel dépend du système d'exploitation la définition de séparateur de liste:
Windows: vous devez définir la liste élément de séparation par des virgules (Région et langue » Formats » Avancé)
Source: https://superuser.com/questions/238944/how-to-force-excel-to-open-csv-files-with-data-arranged-in-columns#answer-633302
Mac: Besoin de changer de région pour NOUS (puis pour modifier d'autres paramètres de 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 NewmanLee réponse)
Ne pas oublier de fermer Excel complètement avant d'essayer de nouveau.
J'ai répliqué avec succès la question et était capable de se fixer à l'aide de la ci-dessus dans les deux Max et Windows.
Excel est incroyablement brisé lorsque vous traitez avec des CSVs. LibreOffice fait un bien meilleur travail. Donc, j'ai trouvé que:
OS les paramètres régionaux, de sorte que vous avez à sélectionner le bon
Office version