Question

Je produis un rapport au format CSV. Lorsque j'essaie d'ouvrir le fichier dans Excel, il suppose le type de données en fonction du contenu de la cellule et le reformate en conséquence.

Par exemple, si le fichier CSV contient

...,005,...

Ensuite, Excel l’indique 5. Existe-t-il un moyen de le remplacer et d’afficher 005?

Je préférerais modifier le fichier lui-même afin que l'utilisateur puisse simplement cliquer deux fois sur le fichier CSV pour l'ouvrir.

J'utilise Excel 2003.

Était-ce utile?

La solution

Il n’existe pas de moyen simple de contrôler le formatage appliqué par Excel lors de l’ouverture d’un fichier .csv. Cependant, voici trois approches qui pourraient aider.

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

Option 1 & # 8211; Modifier les données du fichier

Vous pouvez modifier les données du fichier .csv comme suit ..., = & # 8221; 005 & # 8221; , ... Cela sera affiché dans Excel sous la forme ..., 005 , ...

.

Excel aura conservé les données sous forme de formule, mais copier la colonne et utiliser des valeurs spéciales pour coller supprime la formule mais conserve le formatage

Option 2 & # 8211; Formater les données

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

.

Option 3 & # 8211; Changez l’extension de fichier en .dif (format d’échange de données)

Modifiez l'extension du fichier et utilisez l'assistant d'importation de fichier pour contrôler les formats. Les fichiers avec une extension .dif sont automatiquement ouverts par Excel lorsque vous double-cliquez dessus.

Pas à pas:

  • Modifiez l'extension de fichier de .csv à .dif
  • .
  • Double-cliquez sur le fichier pour l'ouvrir dans Excel.
  • L’Assistant "Importation de fichier" sera lancé.
  • Définissez le "Type de fichier" sur "Délimité" et cliquez sur le bouton "Suivant".
  • Sous Délimiteurs, cochez la case "Virgule" et cliquez sur le bouton "Suivant".
  • Cliquez sur chaque colonne de vos données affichée et sélectionnez un "Format de données de colonne". La colonne avec la valeur '005' doit être formatée en tant que 'Texte'.
  • Cliquez sur le bouton d'arrivée. Le fichier sera ouvert par Excel avec les formats que vous avez spécifiés.

Autres conseils

N'utilisez pas le format CSV, utilisez SYLK.
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

Cela donne beaucoup plus de contrôle sur le formatage, et Excel n’essayera pas de deviner le type d’un champ en examinant le contenu. Cela semble un peu compliqué, mais vous pouvez vous en tirer en utilisant un très petit sous-ensemble.

Ceci fonctionne pour Microsoft Office 2010, Excel version 14

J'ai mal lu la préférence du PO "de faire quelque chose pour le fichier lui-même". Je garde toujours cela pour ceux qui veulent une solution pour formater directement l'importation

  1. Ouvrez un fichier (nouveau) vierge (Fichier - > Nouveau du classeur)
  2. Ouvrez l'assistant d'importation (Données - > Du texte)
  3. Sélectionnez votre fichier .csv et importez
  4. Dans la boîte de dialogue, choisissez "Délimité", puis cliquez sur Suivant.
  5. Choisissez vos délimiteurs (décochez tout sauf la virgule), choisissez vos qualificateurs de texte (vraisemblablement {Aucun}), cliquez sur Suivant
  6. Dans le champ Aperçu des données , sélectionnez la colonne à transformer en texte. Il convient de souligner.
  7. Dans le champ Format de données de colonne , sélectionnez "Texte".
  8. Cliquez sur Terminé.

Vous pouvez simplement formater votre plage en tant que texte.

ici est un bel article sur les formats numériques et leur programmation.

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

L'ajout d'un espace insécable dans la cellule pourrait être utile. Par exemple: "première valeur"; "deuxième valeur"; "005", ""; autre valeur "

Il oblige Excel à le traiter comme un texte et l’espace n’est pas visible. Sous Windows, vous pouvez ajouter un espace insécable en indiquant alt + 0160. Voir ici pour plus d'informations: http://fr.wikipedia.org/wiki/Non-breaking_space"/ a>

Essayé sur Excel 2010. J'espère que cela pourra aider les personnes qui cherchent encore une solution tout à fait appropriée à ce problème.

J'avais ce problème lors de l'exportation de données CSV à partir de code C #, et je l'ai résolu en ajoutant les caractères avec le caractère de tabulation \ t au début du texte, de sorte que les données étaient interprétées sous forme de texte plutôt que numérique dans Excel (contrairement on ne le verrait pas).

J'ai aimé le = " 001 " approche, mais cela ne permettrait pas aux données CSV exportées d'être réimportées à nouveau dans mon application C # sans supprimer tout le formatage du fichier CSV d'importation (au lieu de cela, je vais simplement rogner les données d'importation).

Je pense que lorsque vous importez le fichier, vous pouvez sélectionner le type de colonne. Faites-le texte au lieu de nombre. Je n'ai pas encore de copie devant moi pour vérifier si.

Charger CSV dans oleDB et forcer tout types de données inférés en chaîne

J'ai posé la même question, puis je l'ai répondu avec du code.

En principe, lorsque le fichier csv est chargé, le pilote oledb émet des hypothèses, vous pouvez indiquer ses hypothèses.

Mon code force la chaîne à tous les types de données mais ... il est très facile de changer le schéma. pour mes besoins, j'ai utilisé un xslt pour obtenir ti comme je le voulais - mais je suis en train d'analyser une grande variété de fichiers.

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

Lorsque vous produisez le fichier csv, ajoutez un espace après la virgule mais avant votre valeur, par exemple. , 005, .

Cela a quand même empêché le formatage automatique de la date dans Excel 2007.

La méthode de l'Assistant d'importation de texte ne fonctionne PAS lorsque le fichier CSV importé comporte des sauts de ligne dans une cellule. Cette méthode gère ce scénario (au moins avec des données délimitées par des tabulations):

  1. Créer un nouveau fichier Excel
  2. Ctrl + A pour sélectionner toutes les cellules
  3. Dans la liste déroulante Format de nombre, sélectionnez Texte
  4. Ouvrir un fichier délimité par des tabulations dans l'éditeur de texte
  5. Tout sélectionner, copier et coller dans Excel

Cela m’a rendu fou toute la journée (étant donné que vous ne pouvez pas contrôler les types de colonnes Excel avant d’ouvrir le fichier CSV), et cela a fonctionné pour moi avec VB.NET et Excel 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

Lorsque vous ouvrez un fichier CSV, vous obtenez l'assistant d'importation de texte. À la dernière étape de l'assistant, vous devriez pouvoir importer la colonne spécifique sous forme de texte, en conservant ainsi le préfixe '00'. Ensuite, vous pouvez formater la cellule comme vous le souhaitez.

J'ai essayé avec Excel 2007 et cela a semblé fonctionner.

Eh bien, Excel n’ouvre jamais l’assistant pour les fichiers CSV. Si vous le renommez en .txt, l'Assistant s'affiche lorsque vous effectuez une opération Fichier> Ouvrir dans Excel la prochaine fois.

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

...,`005,...

MODIFIER: ceci est faux. L'astuce apostrophe ne fonctionne que lors de la saisie de données directement dans Excel. Lorsque vous l'utilisez dans un fichier CSV, l'apostrophe apparaît dans le champ, ce que vous ne souhaitez pas.

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

Ajoutez simplement 'avant le numéro dans la doc CSV.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top