Excel CSV-Number cell format

je produis un rapport comme un fichier CSV. Lorsque j'essaie d'ouvrir le fichier dans Excel, il fait une hypothèse sur le type de données basé sur le contenu de la cellule, et reformate en conséquence.

par exemple, si le fichier CSV contient

...,005,...

alors Excel le montre comme 5. Y a-t-il un moyen d'annuler ceci et d'afficher 005?

je préférerais faire quelque chose au fichier lui-même, de sorte que l'utilisateur pourrait tout simplement double-cliquer sur le fichier CSV pour l'ouvrir.

J'utilise Excel 2003.

77
demandé sur JimmyPena 2008-09-26 06:07:20

16 réponses

il n'y a pas un moyen facile de contrôler le formatage Excel s'applique lors de l'ouverture d'un .fichier csv. Toutefois, voici trois approches qui pourraient aider.

Ma préférence est la première option.

Option 1-Modifier les données dans le fichier

vous pouvez changer les données dans le .fichier csv comme suit ..., ="005" ,... Cela s'affichera dans Excel as ..., 005 ,...

Excel aura gardé les données comme une formule, mais copier la colonne et en utilisant des valeurs spéciales de pâte se débarrasser de la formule, mais conserver le formatage

Option 2" 151960920 – - formater les données

S'il s'agit simplement d'un problème de format et toutes vos données dans cette colonne ont une longueur de trois chiffres. Puis ouvrez les données dans Excel et formatez la colonne contenant les données avec ce format personnalisé 000

Option 3 – changer l'extension de fichier en .dif (format d'échange de Données)

changez l'extension du fichier et utilisez l'Assistant d'importation de fichier pour contrôler les formats. Les fichiers avec une .les extensions dif sont ouvertes automatiquement par Excel lorsque vous cliquez deux fois.

étape par étape:

  • changer l'extension de fichier de .csv à .dif
  • Double-cliquez sur le fichier pour l'ouvrir dans Excel.
  • l'Assistant D'importation de fichiers sera lancé.
  • définit le 'type de fichier' à 'délimité' et clique sur le bouton 'Suivant'.
  • sous les délimiteurs, cochez "virgule" et cliquez sur le bouton "Suivant".
  • Cliquez sur chaque colonne de données qui s'affiche et sélectionnez une Colonne format de données'. La colonne avec la valeur '005' doit être au format "Texte".
  • Cliquez sur le bouton terminer, le fichier sera ouvert par Excel avec les formats que vous avez spécifié.
109
répondu Robert Mearns 2008-09-26 21:23:58

N'utilisez pas CSV, utilisez SYLK.

http://en.wikipedia.org/wiki/SYmbolic_LinK_ (SYLK)

il donne beaucoup plus de contrôle sur le formatage, et Excel ne va pas essayer de deviner le type d'un champ en examinant le contenu. Cela semble un peu compliqué, mais vous pouvez vous en sortir en utilisant un très petit sous-ensemble.

27
répondu Mark Ransom 2008-09-26 02:49:19

cela fonctionne pour Microsoft Office 2010, Excel Version 14

j'ai mal interprété la préférence de L'OP " de faire quelque chose au dossier lui-même."Je garde toujours ceci pour ceux qui veulent une solution pour formater l'importation directement

  1. ouvrir un fichier blanc (Nouveau) (Fichier -> Nouveau du classeur)

  2. ouvrir L'Assistant D'importation (données -> à partir du texte)

  3. Sélectionnez votre .fichier csv et importation

  4. dans la boîte de dialogue, choisissez "délimité" et cliquez sur Suivant.

  5. choisissez vos délimiteurs (décochez tout sauf 'virgule'), Choisissez vos qualificatifs textuels (probablement {aucun}), cliquez sur Suivant

  6. "
  7. dans le champ prévisualisation des données sélectionnez la colonne que vous voulez être du texte. Il devrait mettre en évidence.

  8. dans le champ format de données de colonne , sélectionnez "Texte".

  9. Click terminé.

14
répondu 2013-05-14 20:20:19

vous pouvez simplement formater votre gamme en texte.

Aussi ici est un bel article sur les formats de nombre et comment vous pouvez les programmer.

2
répondu Ólafur Waage 2008-09-26 02:10:23

en fait, j'ai découvert que, au moins à partir de L'Office 2003, vous pouvez enregistrer une feuille de calcul Excel comme un fichier XML. Ainsi, je peux produire un fichier XML et quand je double-clique dessus, il sera ouvert dans Excel. Il fournit le même niveau de contrôle que SYLK, mais la syntaxe XML est plus intuitive.

2
répondu Sergey Stadnik 2008-09-26 04:29:50

Ajouter un espace insécable dans la cellule pourrait aider. Par exemple: "firstvalue";"secondvalue";"005 ";"othervalue"

Il force Excel à le traiter comme un texte et l'espace n'est pas visible. Sur Windows, vous pouvez ajouter un espace sans rupture en basculant alt+0160. Voir ici pour plus d'informations: http://en.wikipedia.org/wiki/Non-breaking_space

essayé sur Excel 2010. Espérons que cela puisse aider les gens qui cherchent encore une solution tout à fait appropriée pour ce problème.

2
répondu Kloe2378231 2013-10-09 14:01:04

j'ai eu ce problème lors de l'exportation des données CSV à partir du code C#, et j'ai résolu ce problème en préparant les données zéro de tête avec le caractère de l'onglet \t, de sorte que les données ont été interprétées comme du texte plutôt que numérique dans Excel (mais contrairement à la préparation d'autres caractères, il ne serait pas vu).

j'ai aimé l'approche = "001", mais cela ne permettrait pas aux données CSV exportées d'être réimportées à mon application C# sans supprimer tout ce formatage du fichier csv d'importation (à la place Je vais simplement couper les données d'importation).

2
répondu Richard Pursehouse 2014-01-24 11:20:38

je crois que lorsque vous importez le fichier, vous pouvez sélectionner le Type de Colonne. Faites le texte au lieu du numéro. Je n'ai pas de copie devant moi pour le moment.

1
répondu Harley Holcombe 2008-09-26 02:10:34

chargez csv dans oleDB et forcez tous les types de données inférés à la chaîne

j'ai posé la même question et je lui ai répondu par code.

en gros, lorsque le fichier csv est chargé, le pilote oledb fait des suppositions, vous pouvez lui dire quelles suppositions faire.

mon code force tous les types de données à string... il est très facile de modifier le schéma. pour mes besoins j'ai utilisé un xslt pour obtenir ti la façon dont je wanted-mais je analyse une grande variété de fichiers.

1
répondu John Nicholas 2017-05-23 11:54:33

je sais que c'est une vieille question, mais j'ai une solution qui n'est pas listée ici.

lorsque vous produisez le csv ajouter un espace après la virgule Mais avant votre valeur par exemple , 005, .

cela a fonctionné pour empêcher auto date formatage dans excel 2007 de toute façon .

1
répondu plntxt 2011-01-04 19:28:33

la méthode de L'Assistant D'importation de texte ne fonctionne pas lorsque le fichier CSV importé a des ruptures de ligne dans une cellule. Cette méthode gère ce scénario (au moins avec des données délimitées par tab):

  1. créer un nouveau fichier Excel
  2. Ctrl+A pour sélectionner toutes les cellules
  3. dans le format numéro combobox, sélectionnez Texte
  4. ouvrir l'onglet fichier délimité dans l'éditeur de texte
  5. Sélectionner tout, copier et coller dans Excel
1
répondu Pickles 2011-04-06 15:18:24

cela m'a rendu fou toute la journée (puisque vous ne pouvez pas contrôler les types de colonnes Excel avant d'ouvrir le fichier CSV), et cela a fonctionné pour moi, en utilisant VB.NET et excellent Interop:

        'Convert .csv file to .txt file.
        FileName = ConvertToText(FileName)

        Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _
                                                        {2, xlTextFormat}, _
                                                        {3, xlGeneralFormat}, _
                                                        {4, xlGeneralFormat}, _
                                                        {5, xlGeneralFormat}, _
                                                        {6, xlGeneralFormat}}

        'We are using OpenText() in order to specify the column types.
        mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes)
        mxlWorkBook = mxlApp.ActiveWorkbook
        mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet)


Private Function ConvertToText(ByVal FileName As String) As String
    'Convert the .csv file to a .txt file.
    'If the file is a text file, we can specify the column types.
    'Otherwise, the Codes are first converted to numbers, which loses trailing zeros.

    Try
        Dim MyReader As New StreamReader(FileName)
        Dim NewFileName As String = FileName.Replace(".CSV", ".TXT")
        Dim MyWriter As New StreamWriter(NewFileName, False)
        Dim strLine As String

        Do While Not MyReader.EndOfStream
            strLine = MyReader.ReadLine
            MyWriter.WriteLine(strLine)
        Loop

        MyReader.Close()
        MyReader.Dispose()
        MyWriter.Close()
        MyWriter.Dispose()

        Return NewFileName
    Catch ex As Exception
        MsgBox(ex.Message)
        Return ""
    End Try

End Function
1
répondu Ellen 2014-08-27 18:03:22

lors de l'ouverture D'un CSV, vous obtenez l'Assistant d'importation de texte. Lors de la dernière étape de l'assistant, vous devriez être en mesure d'importer la colonne de texte, conservant ainsi le '00' préfixe. Après cela, vous pouvez alors formater la cellule de n'importe quelle façon que vous voulez.

j'ai essayé avec Excel 2007 et il semble fonctionner.

0
répondu Mark 2008-09-26 02:12:55

Eh bien, excel ne fait jamais apparaître l'assistant pour les fichiers CSV. Si vous renommez-le .txt, vous verrez l'assistant lorsque vous faites un Fichier>Ouvrir dans Excel la prochaine fois.

0
répondu Narayanan 2009-11-30 19:14:18

mettez un seul devis avant le champ. Excel le traitera comme du texte, même s'il ressemble à un nombre.

...,`005,...

EDIT: Ce qui est faux. L'astuce de l'apostrophe ne fonctionne que lorsque les données sont entrées directement dans Excel. Lorsque vous l'utilisez dans un fichier CSV, l'apostrophe apparaît dans le champ, que vous ne voulez pas.

http://support.microsoft.com/kb/214233

0
répondu JW. 2010-10-14 20:14:04

il suffit d'ajouter " avant le numéro dans le DOC CSV.

0
répondu MNassar 2013-11-19 11:17:44