J'ai une base de données qui suit les ventes de widgets par numéro de série. Les utilisateurs saisissent les données et la quantité d'acheteurs, puis analysent chaque widget dans un programme client personnalisé. Ils finalisent ensuite la commande. Tout cela fonctionne parfaitement.
Certains clients veulent une feuille de calcul compatible avec Excel pour les widgets qu'ils ont achetés. Nous générons cela avec un script PHP qui interroge la base de données et affiche le résultat sous forme de fichier CSV avec le nom du magasin et les données associées. Cela fonctionne parfaitement bien aussi.
Lorsqu'il est ouvert dans un éditeur de texte tel que Notepad ou vi, le fichier se présente comme suit:
"Account Number","Store Name","S1","S2","S3","Widget Type","Date"
"4173","SpeedyCorp","268435459705526269","","268435459705526269","848 Model Widget","2011-01-17"
Comme vous pouvez le constater, les numéros de série sont présents (dans ce cas deux fois, toutes les séries secondaires ne sont pas identiques) et sont de longues chaînes de chiffres. Lorsque ce fichier est ouvert dans Excel, le résultat devient:
Account Number Store Name S1 S2 S3 Widget Type Date
4173 SpeedyCorp 2.68435E+17 2.68435E+17 848 Model Widget 2011-01-17
Comme vous l'avez peut-être observé, les numéros de série sont entourés de guillemets doubles. Excel ne semble pas respecter les qualificateurs de texte dans les fichiers .csv. Lors de l'importation de ces fichiers dans Access, nous n'avons aucune difficulté. Lorsque vous les ouvrez sous forme de texte, aucun problème. Mais Excel, à coup sûr, convertit ces fichiers en déchets inutiles. Essayer d'apprendre aux utilisateurs finaux comment ouvrir un fichier CSV avec une application autre que celle par défaut est en train de devenir fastidieux. Y a-t-il de l'espoir? Y a-t-il un paramètre que je n'ai pas pu trouver? Cela semble être le cas avec Excel 2003, 2007 et 2010.
la source
Excel does not seem to respect text qualifiers in .csv files
- les guillemets doubles ne sont pas des qualificateurs de texte, ils permettent simplement des virgules dans vos données. Si vous n'utilisez pas de virgules dans vos données, ils n'ont alors aucun sens . Toutes les données d'un fichier CSV ne sont pas typées. Excel ne peut donc que deviner que votre grand numéro de série est un nombre . C'est à ce moment-là que vous entrez dans la précision maximale de 15 chiffres d'Excel , ce qui tronque vos chiffres.Réponses:
Excel est une poubelle inutile.
Solution
Je serais un peu surpris qu'un client souhaitant vos données au format Excel ne puisse pas modifier la mise en forme visible de ces trois colonnes en "Nombre" avec zéro décimale ou en "texte". Mais supposons qu'un bref document explicatif est hors de question.
Vos options sont:
="268435459705526269","",="268435459705526269"
(vous pouvez également vous="268435459705526269",,="268435459705526269"
enregistrer en économisant 2 caractères). Cela présente l’avantage d’être affiché correctement et probablement utile, mais subtilement cassé (car ce sont des formules).Soyez prudent avec l'option 3, car certains programmes (y compris Excel et Open Office Calc) ne traiteront plus les virgules dans les
=""
champs comme des caractères d'échappement. Cela signifie que="abc,xyz"
s'étendra sur deux colonnes et interrompra l’importation.L'utilisation du format de
"=""abc,xy"""
résout ce problème, mais cette méthode vous limite toujours à 255 caractères en raison de la limite de longueur de formule d'Excel.la source
Nous avions un problème similaire: nous avions des fichiers CSV avec des colonnes contenant des plages telles que 3-5 et Excel les convertissait toujours en dates. Par exemple, 3-5 était le 3 mars, après quoi le retour au format numérique nous donnait un entier de date inutile. Nous avons contourné par
Vous pourriez faire la même chose ici, je pense.
À votre santé
la source
Une meilleure solution consiste à générer un classeur XML. Comme ça:
Le fichier doit avoir une extension .xml. Excel et OpenOffice l'ouvrent correctement.
la source
Ma solution: j'ai le même problème avec l'importation de numéros de série. Ils ne doivent pas être traités comme des nombres, c’est-à-dire qu’aucune fonction mathématique n’est exécutée, mais nous avons besoin du nombre entier. Le plus simple est d’insérer un espace dans le numéro de série. par exemple "12345678 90123456 1234". Lorsque Excel l'importe, il sera traité comme du texte au lieu d'un chiffre.
la source
J'ai eu de longs numéros de compte tronqués.
Voici comment je l'ai corrigé:
Ouvrez votre fichier.csv dans Libre Office / Open Office (vous devrez peut-être spécifier des délimiteurs, etc.), puis enregistrez le fichier en tant que fichier XML Excel.
Ensuite, ouvrez ce fichier dans Excel et vous verrez alors que les colonnes ne sont plus changées en format scientifique ou autre. Pour plus de sécurité, cliquez avec le bouton droit de la souris sur la colonne et définissez explicitement le format sur Texte, puis enregistrez le fichier au format Excel.
Ouvrez le fichier au format Excel et la colonne devrait toujours être ok!
la source
L'assistant d'importation est la meilleure solution pour les utilisateurs occasionnels et les situations ponctuelles. Si vous avez besoin d'une solution de programmation, vous pouvez utiliser la méthode QueryTables.Add (c'est ce que l'Assistant d'importation utilise en arrière-plan).
la source