IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Convertir un fichier CSV avec l'interop d'Excel - .Net


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut Convertir un fichier CSV avec l'interop d'Excel - .Net
    Bonjour à tous,

    J'ai un fichier csv qui est incorrect car il se présente sous cette forme :
    "aaa;bbb;ccc"
    "ddd;eee;fff"

    Comme vous le voyez, les guillemets rendent le fichier incorrect et c'est une autre entité qui le génère et ils ne changeront pas le format.

    Le pb est que je dois donc réussir à travailler avec et avant de faire un traitement ligne par ligne pour dire "si la ligne contient que 2 guillemets, et que le 1er et le dernier caractère (après trim au cas où) est un guillemet, alors je les supprime", je pensais plutôt utiliser la fonction convertir dans Excel qui le fait très bien...

    Mon source est en VB.Net. Je n'arrive pas à trouver le moyen d'utiliser cette fonction (via Microsoft.Office.Interop.Excel), dont j'ai pourtant le code VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
            TrailingMinusNumbers:=True

    J'ai également essayer d'utiliser la méthode SaveAs en type csv, cela ne suffit pas pour résoudre mon pb.


    Qqn peut-il m'aider svp ??


    D'avance, merci pour vos réponses

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    A mon avis ce serait quand même beaucoup plus simple de supprimer toi-même les guillemets...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Using reader As New StreamReader("fichier_mal_foutu.csv")
        Using writer As New StreamWriter("fichier_ok.csv")
            Dim line As String = reader.ReadLine()
            writer.WriteLine(line.Trim('"'))
        End Using
    End Using

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Par défaut
    Et si demain ce caractère change ? Ou qu'il y ait un autre pb de conversion...

    Tu vois le fait est qu'en faisant convertir depuis Excel, il arrive (normalement) à toujours bien s'en sortir alors j'aurai souhaité me baser sur qlq chose de plus fiable que ce traitement bien précis pour ce cas, l'autre en résoudra bien davantage à mon avis.

    Disons que c'est la solution que je prendrai si je n'arrive pas à faire ça... :/

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    A quel endroit bloques-tu dans l'automation ? Normalement, si tu as le code VBA, tu devrais t'en sortir. D'autant plus que tu codes en VB.Net.

    Citation Envoyé par tomlev Voir le message
    A mon avis ce serait quand même beaucoup plus simple de supprimer toi-même les guillemets...
    +1

    Je pense que la solution que tu imagines est trop lourde pour le traitement que tu veux faire.
    Mettre en place l'automation va faire apparaitre de nombreuses autres considérations :
    - Les erreurs Excel : le système de conversion Excel pourra effectivement gérer de nombreux cas différents, mais si un jour, même Excel n'arrive pas à convertir le fichier, alors là tu vas être bien embêté pour interpréter le message d'erreur...
    - Le déploiement : si tu comptes utiliser cette fonctionnalité dans une application que tu vas déployer (installer sur plusieurs clients), cela nécessite que Excel soit installé sur le système exécutant l'application.

Discussions similaires

  1. Ouvrir un fichier csv avec plus de 65535 lignes
    Par mustang-ffw02 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 09/10/2007, 20h46
  2. Charger un Fichier CSV avec traitement
    Par Iphelias dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 06/08/2007, 13h53
  3. Réponses: 2
    Dernier message: 13/03/2007, 11h19
  4. Update fichier CSV avec ADO et Windev
    Par bastiencb dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 13/12/2006, 16h27
  5. [CSV] Affichage d'un fichier csv avec pagination
    Par arnoweb dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo