Bien que j'essaie de l'éviter, je dois parfois ouvrir un fichier CSV dans Excel. Lorsque je le fais, il formate les colonnes contenant des nombres, ce qui les rend inutiles pour mes besoins. Autant que je sache, le seul moyen d'éviter cela lors de l'importation est de renommer le fichier afin que l'extension ne soit pas .csv et d'utiliser l'assistant d'importation pour spécifier le format de chaque colonne individuellement. Pour les fichiers de 50 à 60 colonnes, cela n’est pas pratique.
Puisque chaque réponse à cette question souvent posée sur Internet suggère soit un moyen de reconvertir les nombres formatés une fois le fichier ouvert (ce qui ne fonctionnera pas pour moi - je veux résoudre le problème général, pas quelques cas spécifiques) ou en sélectionnant manuellement le type de format de chaque colonne (ce que je ne veux pas faire), je cherche un moyen de définir une préférence globale ou un style tel que toutes les colonnes de tous les fichiers CSV ouverts soient toujours au format texte. Je connais aussi le fait de "protéger" les chiffres avec des guillemets, mais les fichiers que je reçois ne viennent pas comme cela et j'espérais éviter de les traiter à l'avance pour éviter que Excel ne les gâche.
Existe-t-il un moyen de procéder spécifiquement comme suit: formatez toujours toutes les colonnes de fichiers CSV ouverts sous forme de texte, sans sélectionner manuellement chaque colonne lors de l'importation?
J'utilise Excel 2003, mais je vais prendre des réponses pour 2007 si c'est ce que vous savez.
la source
Réponses:
Cela marche:
Usage:
Le fichier séparé par des virgules est maintenant ouvert en tant que feuille Excel avec toutes les colonnes au format texte.
Notez que la solution de l'assistant de @ Wetmelon fonctionne très bien, mais si vous ouvrez de nombreux fichiers, vous pouvez, comme moi, vous lasser, à chaque fois, de faire défiler l'écran jusqu'à la colonne 60 afin de cliquer dessus en maintenant la touche Maj enfoncée.
EDIT @GSerg indique dans le commentaire ci-dessous que cela "ne fonctionne pas" et "mange des espaces et des zéros non significatifs". Je citerai simplement le commentaire à la question, qui est plus descriptif:
Donc, le code ci-dessus "fonctionne", mais est tué par ce comportement ridicule d'Excel. Quelle que soit la façon dont vous le coupez, vous êtes obligé de changer l'extension en quelque chose d'autre que ".csv", désolé! Après cela, vous êtes libre à la maison.
la source
Workbooks.OpenText
a ses défauts par conception (voir ma réponse ci-dessous). Utilisez à laQueryTables
place.Comment ouvrir des CSV dans Excel
Bonne façon
Excel → Données → Obtenir des données externes → Sélectionnez toutes les colonnes avec, Shiftpuis choisissez Texte.
Upside: traite toutes les valeurs correctement en tant que texte sans exception
Inconvénient: plus d’étapes qu’un simple double-clic
Mauvaise manière
Ouvrir un fichier CSV avec un double clic ou la boîte de dialogue Ouvrir avec d' Excel
Inconvénient: le gestionnaire de fichiers CSV interne d'Excel interprète mal les valeurs avec un interligne
-
ou un=
signe sous la forme d'une formule plutôt que du texteInconvénient: vous perdrez des zéros non significatifs à partir de valeurs binaires, comme en
0001
raison du format de colonne détecté automatiquement par ExcelBon chemin (pour VBA)
Utilisez QueryTables (l'équivalent VBA
Get external data
) → Exemple de codeUpside: traite toutes les valeurs correctement en tant que texte sans exception
Inconvénient: un peu plus de code que de
OpenText
méthodeMauvaise façon (pour VBA)
Utiliser la
Workbooks.OpenText
méthode → Exemple de codeInconvénient: cette méthode utilise toujours le gestionnaire d'importation CSV interne d'Excel avec tous ses défauts.
Inconvénient: De plus, le
fieldinfo
paramètre deOpenText
est ignoré si l'extension est CSV. Normalement, ce paramètre vous permet de choisir chaque format de colonne, mais pas si l'extension est CSV. Vous pouvez en savoir plus sur ce comportement sur Stack OverflowRenommer temporairement l'extension source de CSV en TXT puis en CSV est une solution de contournement valide si vous avez le contrôle total sur le fichier source.
Méthodes supplémentaires
Si vous avez accès à la source qui crée votre fichier CSV, vous pouvez modifier la syntaxe de ce dernier.
Placez toutes les valeurs entre guillemets et préfixez un signe égal
="00001"
ou ajoutez un onglet à chaque valeur. Les deux méthodes obligeront Excel à traiter la valeur en tant que texteContenu CSV original
CSV dans Excel lorsqu'il est ouvert via un double clic
Notez comment la ligne 2 (méthode des guillemets doubles) et la ligne 3 (méthode des tabulations) ne sont pas modifiées par Excel
Ouvrez CSV dans le Bloc - notes et copiez-collez toutes les valeurs dans Excel. Ensuite, utilisez Données - Texte sur colonnes -Inconvénient: Le texte dans les colonnes pour modifier les formats de colonne de général en texte génère des résultats incohérents. Si une valeur contient
-
des caractères entourés (par exemple, "= E1-S1"), Excel tente de scinder cette valeur en plusieurs colonnes. Les valeurs situées directement dans cette cellule peuvent être écrasées(le comportement de Text to column a été modifié quelque part entre Excel 2007 et 2013 afin que cela ne fonctionne plus)
Complément Excel pour ouvrir des fichiers CSV et importer toutes les valeurs sous forme de texte
Ceci est un plug-in Excel destiné à simplifier les actions d'importation CSV.
Le principal avantage: c'est une solution en un clic qui utilise
QueryTables
la même méthode pare-balles que celle utilisée pour obtenir des données externes.Installation
%appdata%\Microsoft\AddIns
File tab → Options → Add-Ins → Go To
et sélectionnezImportCSV.xla
File tab → Options → Trust Center → Trust Center Settings → Macro Settings → Enable all macros
Vous remarquerez une nouvelle entrée de la barre de menus appelée Compléments et vous utiliserez ce bouton pour ouvrir rapidement vos fichiers CSV sans passer par les tracas de la boîte de dialogue Importer.
Script PowerShell pour ouvrir des fichiers CSV directement à partir de l'Explorateur Windows
Vous pouvez utiliser un script PowerShell pour ouvrir des fichiers CSV et les transmettre automatiquement à Excel. Le script utilise en mode silencieux la méthode d'importation de texte d'Excel, qui traite toujours les valeurs en tant que texte et, en prime, gère le codage UTF-8.
C:\my\folder\myScript.ps1
. (Notez l'extension.ps1
)shell:sendto
» EnterMaintenant, vous pouvez sélectionner (plusieurs) CSV et les ouvrir dans Excel via
Right-click » SendTo » Excel
la source
Vous pouvez essayer d’ouvrir un fichier .xlsx, puis de créer une connexion de données et d’importer le fichier .csv. Sélectionnez "délimité par des virgules", puis sélectionnez l'option permettant de traiter toutes les colonnes en tant que texte plutôt que "Général".
Edit: Oh, je n'ai pas bien lu la question. Dans l'assistant d'importation, sélectionnez le premier en-tête de colonne à importer en tant que texte, faites défiler jusqu'au dernier en-tête de colonne et maintenez les touches Maj + Clic enfoncées. Sélectionnez ensuite l'option radiale "Texte".
la source
La suggestion de Wetmelon fonctionne (même avec le format .CSV) si vous procédez comme suit:
Je sais que ce sont plus d'étapes, mais au moins, cela me permet d'ouvrir les CSV de cette façon sans avoir à changer l'extension.
la source
Fais attention!
Lorsque vous utilisez la méthode manuelle "Excel → Données → Obtenir des données externes → Sélectionnez toutes les colonnes et choisissez Texte" ......
Cela définira uniquement les colonnes sur le texte "avec des données dans la première ligne" (généralement une ligne d'en-tête). Cet assistant ne vous montre pas les colonnes plus à droite qui pourraient contenir des données plus loin mais pas dans la première ligne. Par exemple:
Row1Col1, Row1Col2, Row1Col3
Row2Col1, Row2Col2, Row2Col3, Row2Col4
Vous ne verrez jamais la Col 4 dans l'assistant d'importation, vous n'aurez donc pas la possibilité de le changer du format général au format texte avant l'importation !!!!
la source
Voici la procédure alternative au code posté ci-dessus par Jean-François Corbett
Cette procédure importera un fichier csv dans Excel avec toutes les colonnes au format texte.
la source
Si vous importez toujours les mêmes données (format d'enregistrement constant, mise en page, etc.), vous pouvez écrire une macro Access à l'aide d'une spécification d'importation, puis exporter les données dans Excel. Fait cela peut fois. L’autre méthode que j’ai utilisée consiste à utiliser VBA, à lire les données dans l’enregistrement de la feuille de calcul, un enregistrement à la fois, puis à les analyser au fur et à mesure de la lecture. Autant que je sache, il n’existe aucun moyen de définir un format par défaut lors de l’importation dans Excel et même si vous le pouviez, des problèmes se produiraient lors du prochain type de fichier que vous essayez d’analyser.
la source
En tant que demande, soumettre mon commentaire comme réponse (avec un peu plus d’informations ajoutées):
Hey Scripting Guy a publié un article sur l’ importation de CSV dans Excel qui pourrait vous donner des informations utiles. Jouer avec l’objet de données dans PowerShell peut vous permettre de faire ce que vous voulez.
Bien que l'article mentionne spécifiquement l'importation de données dans les cellules pouvant laisser le format numérique, il est possible de jouer avec certaines propriétés et méthodes d'Excel ComObject pour forcer les données à entrer les cellules sous forme de texte brut (ou forcer). la mise en forme des cellules en texte avant ou après l'importation).
la source
Pour des raisons inconnues, même si vous fournissez explicitement des formats pour toutes les colonnes, Excel l'ignorera si l'extension de fichier est CSV.
Quelques options:
Créez une requête pour importer les données, comme le suggère Wetmelon .
Inconvénient: il se peut que des pilotes de base de données CSV soient manquants sur une machine 64 bits.
Utilisez le code de Jean , mais intégrez la copie du fichier dans un dossier temporaire et la modification de l'extension de la copie.
Inconvénient: pas de lien vers le fichier d'origine (l'enregistrement écrasera la copie); vous devrez ensuite supprimer manuellement la copie. Néanmoins, vous pouvez enregistrer manuellement sous sur le fichier CSV d'origine.
Ouvrez le fichier CSV dans le Bloc - notes Ctrl+A, Ctrl+C, coller à Excel, données - Texte à colonnes, il est l'assistant habituel où vous pouvez définir toutes les colonnes en texte en une seule fois. C'est une version différente de l'option précédente, car elle masque également l'extension précieuse d'Excel.
Inconvénient: manuel.
Ayez une boucle VBA très simple qui lit le fichier entier en mémoire et le met sur la feuille, cellule par cellule.
Inconvénient: plus lent, moche.
la source
Si je comprends bien la question, cela est facilement résolu en utilisant l'option Transposer de Coller-Spécial, comme décrit ici .
la source