J'ai besoin de générer un fichier pour Excel, certaines des valeurs de ce fichier contiennent plusieurs lignes.
il y a aussi du texte non anglais là-dedans, donc le fichier doit être Unicode.
Le fichier que je génère maintenant ressemble à ceci: (en UTF8, avec du texte non anglais mélangé dans et avec beaucoup de lignes)
Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"
Notez que la valeur multiligne est placée entre guillemets doubles, avec un saut de ligne quotidien normal.
Selon ce que j'ai trouvé sur le Web, cela est censé fonctionner, mais cela ne fonctionne pas, du moins ne gagne pas les fichiers Excel 2007 et UTF8, Excel traite la 3e ligne comme la deuxième ligne de données et non comme la deuxième ligne de la première ligne de données .
Cela doit fonctionner sur les machines de mes clients et je n'ai aucun contrôle sur leur version d'Excel, j'ai donc besoin d'une solution qui fonctionnera avec Excel 2000 et versions ultérieures.
Merci
EDIT: J'ai "résolu" mon problème en ayant deux options CSV, une pour Excel (Unicode, tabulation séparée, pas de nouvelle ligne dans les champs) et une pour le reste du monde (UTF8, CSV standard).
Pas ce que je cherchais mais au moins ça marche (jusqu'à présent)
Réponses:
Vous devez avoir des espaces au début des champs UNIQUEMENT là où les espaces font partie des données. Excel ne supprimera pas les espaces de début. Vous obtiendrez des espaces indésirables dans vos en-têtes et vos champs de données. Pire encore, celui
"
qui devrait «protéger» ce saut de ligne dans la troisième colonne sera ignoré car il ne se trouve pas au début du champ.Si vous avez des caractères non ASCII (codés en UTF-8) dans le fichier, vous devez avoir une nomenclature UTF-8 (3 octets
hex EF BB BF
) au début du fichier. Sinon, Excel interprétera les données selon le codage par défaut de vos paramètres régionaux (par exemple cp1252) au lieu de utf-8, et vos caractères non ASCII seront supprimés.Les commentaires suivants s'appliquent à Excel 2003, 2007 et 2013; non testé sur Excel 2000
Si vous ouvrez le fichier en double-cliquant sur son nom dans l'Explorateur Windows, tout fonctionne bien.
Si vous l'ouvrez depuis Excel, les résultats varient:
Les options comprennent:
la source
EFBBBF
tête, utilise0A
comme séparateur de ligne et0D0A
comme nouvelle ligne à l'intérieur des chaînes dans les cellules de texte.Après de nombreux ajustements, voici une configuration qui fonctionne en générant des fichiers sous Linux, à lire sous Windows + Excel, bien que le format de nouvelle ligne intégré ne soit pas conforme à la norme :
En Perl, j'ai utilisé Text :: CSV pour faire cela comme suit:
la source
\n
. MerciRécemment, j'ai eu un problème similaire, je l'ai résolu en important un fichier HTML , l'exemple de base serait comme ceci:
Je sais, ce n'est pas un CSV et peut fonctionner différemment pour différentes versions d'Excel, mais je pense que cela vaut la peine d'essayer.
J'espère que ça aide ;-)
la source
Il est à noter que lorsqu'un fichier .CSV contient des champs entourés de guillemets doubles contenant des sauts de ligne, Excel n'importera pas correctement le fichier .CSV si le fichier .CSV est écrit au format UTF-8. Excel traite le saut de ligne comme s'il s'agissait de CR / LF et commence une nouvelle ligne. La feuille de calcul est tronquée. Cela semble être vrai même si les points-virgules sont utilisés comme délimiteurs de champ (au lieu de virgules).
Le problème peut être résolu en utilisant le Bloc-notes Windows pour modifier le fichier .CSV, en utilisant Fichier> Enregistrer sous ... pour enregistrer le fichier, et avant d'enregistrer le fichier, en modifiant le codage du fichier de UTF-8 à ANSI. Une fois le fichier enregistré au format ANSI, je constate que Microsoft Excel 2013 sous Windows 7 Professionnel importera le fichier correctement.
la source
Le retour à la ligne à l'intérieur d'une valeur semble fonctionner si vous utilisez un point-virgule comme séparateur, au lieu d'une virgule ou d'une tabulation, et utilisez des guillemets.
Cela fonctionne pour moi dans Excel 2010 et Excel 2000. Cependant, étonnamment, cela ne fonctionne que lorsque vous ouvrez le fichier en tant que nouvelle feuille de calcul, pas lorsque vous l'importez dans une feuille de calcul existante à l'aide de la fonction d'importation de données.
la source
Sur un PC, le caractère ASCII n ° 10 est ce que vous voulez placer une nouvelle ligne dans une valeur.
Cependant, une fois que vous l'avez dans Excel, vous devez vous assurer que le retour à la ligne est activé pour les cellules multilignes ou que la nouvelle ligne apparaîtra sous forme de boîte carrée.
la source
Cela ne fonctionnera pas si vous essayez d'importer le fichier dans EXCEL.
Associez l'extension de fichier csv à EXCEL.EXE pour pouvoir appeler EXCEL en double-cliquant sur le fichier csv.
Ici, je place un peu de texte suivi du NewLine Char suivi d'un peu plus de texte ET entourant la chaîne entière avec des guillemets doubles.
N'utilisez pas de CR car EXCEL placera une partie de la chaîne dans la cellule suivante.
Lorsque vous invoquez EXCEL, vous verrez ceci. Vous devrez peut-être dimensionner automatiquement la hauteur pour tout voir. L'endroit où les sauts de ligne dépendront de la largeur de la cellule.
2
DATE
Voici le code en Basic
la source
J'ai trouvé ça et ça a marché pour moi
Ensuite, où vous devez avoir des choses enfermées
.....
Ensuite, lorsque vous avez besoin d'écrire quelque chose - comme du HTML qui inclut le ", vous pouvez le faire
Les nouvelles lignes se terminent par
. PHP_EOL
La fin du script imprime un lien afin que l'utilisateur puisse télécharger le fichier.
la source
Les fichiers UTF qui contiennent une nomenclature obligeront Excel à traiter les nouvelles lignes littéralement même si ce champ est entouré de guillemets. (Testé Excel 2008 Mac)
La solution est de faire de toute nouvelle ligne un retour chariot (CHR 13) plutôt qu'un saut de ligne.
la source
Testez ceci: cela fonctionne parfaitement pour moi: mettez les lignes suivantes dans un
xxxx.csv
fichierOuvrez avec Excel.
dans certains cas s'ouvrira directement sinon devra utiliser la conversion de colonne en données. développez la largeur de la colonne et appuyez sur le bouton d'habillage de texte. ou formatez les cellules et activez le texte d'habillage.
et merci pour les autres suggestions, mais elles n'ont pas fonctionné pour moi. Je suis dans un environnement pur Windows, et je ne voulais pas jouer avec unicode ou autre chose amusante.
De cette façon, vous mettez une formule de csv à exceller. Il peut y avoir de nombreuses utilisations pour cette méthode de travail. (notez le = avant les guillemets)
pd: Dans vos suggestions, veuillez mettre quelques exemples des données, pas seulement le code.
la source
mettre "\ r" à la fin de chaque ligne avait en fait l'effet de sauts de ligne dans Excel, mais dans le .csv, il disparaissait et laissait un désordre affreux où chaque ligne était écrasée contre la suivante sans espace ni saut de ligne
la source
La façon dont nous le faisons (nous utilisons VB.Net) est de placer le texte avec de nouvelles lignes dans Chr (34) qui est le caractère représentant les guillemets doubles et de remplacer tous les caractères CR-LF pour LF.
la source
Normalement, une nouvelle ligne est "\ r \ n". Dans mon CSV, j'ai remplacé "\ r" par une valeur vide. Voici le code en Javascript:
Lorsque j'ouvre le CSV dans MS Excel, cela a bien fonctionné. Si une valeur comporte plusieurs lignes, elle restera dans une seule cellule de la feuille Excel.
la source
Pour l' ouverture de fichier uniquement, la syntaxe est
L'essentiel est qu'il n'y ait pas d'espace après le premier ",". Normalement, les espaces sont corrects et coupés si la chaîne n'est pas entre guillemets. Mais sinon méchant. Il m'a fallu un certain temps pour comprendre cela.
Il semble que peu importe si la ligne est terminée \ n ou \ c \ n.
Assurez-vous d'agrandir la barre de formule afin que vous puissiez réellement voir le texte dans la cellule (m'a obtenu après une longue journée ...)
Maintenant, bien sûr, File Open ne supportera pas correctement UTF-8 (à moins que l'on utilise des astuces).
Excel> Données> Obtenir des données externes > À partir du texte
Peut être réglé en mode UTF-8 (il est en bas de la liste des polices). Cependant, dans ce cas, les nouvelles lignes ne semblent pas fonctionner et je ne connais aucun moyen de résoudre ce problème.
(On pourrait penser qu'après 30 ans, la sclérose en plaques ferait bien l'affaire.)
la source
Dans Excel 365 lors de l'importation du fichier:
Données -> À partir du texte / CSV -> Sélectionnez Fichier> Transformer les données -> Configuration de la source de données -> Sélectionnez la source de données -> Cliquez sur Modifier la source -> Dans la liste déroulante des sauts de ligne, sélectionnez Ignorer les sauts de ligne entre guillemets.
Le texte ci-dessus a été traduit du portugais, le libellé pourrait donc être différent en anglais.
la source
vous pouvez faire le suivant
"\"Value3 Line1 Value3 Line2\""
. Cela fonctionne pour moi générer un fichier csv en javala source
Voici une approche intéressante utilisant JavaScript ...
la source
L'impression d'une nouvelle ligne HTML
<br/>
dans le contenu et l'ouverture dans Excel fonctionneront bien sur n'importe quel Excella source
Vous pouvez utiliser le raccourci clavier ALT + Entrée.
la source