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

ASP.NET Discussion :

Ouverture d'un fichier Excel avec ADO


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 22
    Points
    22
    Par défaut Ouverture d'un fichier Excel avec ADO
    Bonjour à tous,

    Je travaille sur une application vb.net en ce moment, qui ouvre des fichiers Excel pour y lire des données.
    J'utilise la méthode ADO, dont voici un extrait de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    _strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                "Data Source=" & fileUrl & ";" & _
                                "Extended Properties=""Excel 8.0;"""
     
                'Définition et alimentation du DataSet
                _myDataset = New DataSet()
                _myData = New OleDbDataAdapter("SELECT * FROM [" & SheetName & "$]", _strConn)
    Le système fonctionne correctement, mais je dois faire évoluer le produit.
    Ici, dans la requête SELECT, le nom de la feuille excel doit être connu à l'avance. Dans l'application, il est donc convenu d'appeler la première feuille "Feuil1".
    Cependant, je dois rendre l'outil plus souple et rendre l'application capable d'ouvrir n'importe quel nom de feuille.

    Ma question est la suivante : comment ouvrir un document Excel avec ADO sans connaître le nom de la première feuille du fichier?

    Merci de votre aide

  2. #2
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par sorlok Voir le message
    Cependant, je dois rendre l'outil plus souple et rendre l'application capable d'ouvrir n'importe quel nom de feuille.
    Excel, c'est l'opposé de la souplesse

    Personnellement, j'exporterais les données au format CSV pour pouvoir les manipuler directement avec un TextReader.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Malheurreusement le client est l'opposé de la souplesse aussi...
    Je gère déjà les csv (et la, noooo problem évidement).

    Ma question perdure donc...
    snif

  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
    Points : 2 927
    Points
    2 927
    Par défaut
    Sèche tes larmes sorlok, car Excel est bien plus souple que certains le pensent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    string filePath = @"C:\Classeur1.xls";
    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0\";";
    System.Data.OleDbConnection connection = new OleDbConnection(connectionString);
    connection.Open();
     
    System.Data.DataTable dt = connection.GetSchema("tables");
     
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        Console.WriteLine(dt.Rows[i].ItemArray[2].ToString());
    }
     
    connection.Close();
    Alors dis-nous ce que tu vois sur ta console ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Sèche tes larmes sorlok, car Excel est bien plus souple que certains le pensent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    string filePath = @"C:\Classeur1.xls";
    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0\";";
    System.Data.OleDbConnection connection = new OleDbConnection(connectionString);
    connection.Open();
     
    System.Data.DataTable dt = connection.GetSchema("tables");
     
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        Console.WriteLine(dt.Rows[i].ItemArray[2].ToString());
    }
     
    connection.Close();
    Alors dis-nous ce que tu vois sur ta console ?
    J'avoue que la même chose en vb.net ce serait le dream
    J'ai du mal à faire la transposition

  6. #6
    Membre expérimenté

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Points : 1 738
    Points
    1 738
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim filePath as string = "C:\Classeur1.xls"
    dim connectionString as string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=""Excel 8.0"";"
    dim connection as System.Data.OleDbConnection = new OleDbConnection(connectionString)
    connection.Open()
     
    dim dt as System.Data.DataTable = connection.GetSchema("tables")
    while  dt.Rows.hasrow
     
        Console.WriteLine(dt.Rows[i].ItemArray[2].ToString())
    do
     
    connection.Close()
    voilà ce que ça donne normalement en VB.NET
    j'ai fait ça direct dans l'éditeur du forum, il y a peut etre des erreurs.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Bon, je me suis un peu acharné et j'ai réussi à modifier mon code pour l'adapter au vb.net (tu avais déjà fait le gros du boulot )
    Et ça fonctionne parfaitement! Je vais adapter ça pour mon soft, un big big merci, tu as parfaitement ciblé mon problème. Génial!

    Pour info voici la source une fois transposée en vb.net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Imports System.Data.OleDb
    [...]
    Dim filePath As String = "C:\Classeur1.xls"
            Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath & ";Extended Properties=""Excel 8.0"";"
            Dim connection As OleDbConnection = New OleDbConnection(connectionString)
            connection.Open()
     
            Dim dt As System.Data.DataTable = connection.GetSchema("tables")
     
            For i As Integer = 0 To dt.Rows.Count - 1
                MsgBox(dt.Rows(i).ItemArray(2).ToString())
            Next
     
            connection.Close()

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    lol bon ben joli travail commun.
    Encore merci pour tout et très bonne journée!

  9. #9
    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
    Points : 2 927
    Points
    2 927
    Par défaut
    N'oublie pas de cliquer sur (tout en bas de cette page) lorsque ton problème est résolu

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Je le cherchais hier sans le trouver.
    Je devais être déconnecté.

    Désolé et encore merci pour votre aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création objet avec l ouverture d un fichier excel
    Par levac dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 30/07/2007, 15h51
  2. création d'un fichier excel avec ADO
    Par sony351 dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/02/2007, 15h54
  3. Ouverture d'un fichier texte avec ADO
    Par sony351 dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/02/2007, 16h54
  4. [VBA-E] Probleme avec l'ouverture d'un fichier Excel
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/12/2006, 11h11
  5. Ouverture de fichier Excel avec macros
    Par Mathusalem dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/06/2006, 11h39

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