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

C# Discussion :

connexion Excel DataTable Ole DB


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut connexion Excel DataTable Ole DB
    Bonjour,

    Je suis sur un problème récurrent depuis quelques jours en C# !
    Je travaille sur un projet où je dois lire des données depuis un fichier Excel (*.xls), considéré comme une Base de Données, créer le DataTable correspondant et récupérer les données du fichier Excel.

    Donc, je crée une nouvelle connexion dans l'Explorateur de serveurs : avec Microsoft Access et Fourniture de connecteurs pour Ole Db.
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.xls;Extended Properties=Excel 8.0;HDR=YES;IMEX=1.

    Je teste la connexion et tout va bien !
    Sauf que je désire copier mon fichier source Excel dans mon projet, et ne pas me connecter au fichier local car je dois déployer mon application.

    Pour créer mon DataTable, je fais un glisser/déplacer de ma feuille Excel dans mon DataSet et Visual Studio me demande si je veux intégrer le fichier dans le répertoire de sortie. Je clique sur "OUi" et là..... un message s'affiche :
    Erreur lors de la conversion de la connexion. Erreur inattendue.
    Peut-etre est-ce dû au format fichier excel (97-2003) ?
    Pourtant la connexion se passe bien alors je ne comprends pas le problème.
    J'ai cherché pendant plusieurs jours, sans succès.

    Avez-vous eu le même problème ?
    Pourriez-vous m'aider ?

    Merci d'avance !!

    Hiwatari84 !

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je n'ai pas eu de réponse mais je me suis débrouillée.

    J'aurais une autre question.
    J'ai mon DataSet et mon TableAdapter et j'aimerais effectuer une requete qui prend un paramètre le nom de l'onglet d'un fichier Excel.
    Ma requete est : SELECT * FROM ?
    Parce que l'onglet est aléatoire, or ma requete n'est pas acceptée car la clause FROM est vide.

    Comment puis-je faire ?

    MErci d'avance !!

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Le plus simple est de récupérer la liste de tes feuilles comme cela par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DataTable sheetsTable = _connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });
    _sheets = new List<string>();
    foreach (DataRow row in schemaTable.Rows)
    {
      string sheetName = row["TABLE_NAME"].ToString();
      if (sheetName .EndsWith("_") == false)
      {
        _sheets.Add(sheetName);
      }
    }
    où _connection est ta connexion au classeur excel.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Oui, ça je l'ai fait mais ensuite je ne sais pas comment passer le nom de la feuille dans la requete du DataSet que je veux manipuler.

    Mon idée était de récupérer le nom de la feuille Excel, et de la passer en paramètre d'une requete exécutée sur un DataSet.
    La requete serait : SELECT * FROM ?
    ? serait le nom de la feuille passée en paramètre.
    Mais cette requete n'est pas acceptée...

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par hiwatari84 Voir le message
    La requete serait : SELECT * FROM ?
    ? serait le nom de la feuille passée en paramètre.
    Mais cette requete n'est pas acceptée...
    Ben, cette requête ne correspondant à rien, il est normal qu'elle ne soit pas acceptée.

    Tu peux faire par exemple :
    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
    16
     
     
    DataSet dataSet = new DataSet();
    // cr‚ation de la commande
    StringBuilder sqlCommand = new StringBuilder("SELECT * FROM [");
    sqlCommand.Append(sheetName);
    sqlCommand.Append("]");
    using (OleDbCommand cmdSelect = new OleDbCommand(sqlCommand.ToString(), _connection))
    {
    using (OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter())
    {
    adapter.SelectCommand = cmdSelect;
    adapter.Fill(dataSet, "XLData");
    _connection.Close();
    }
    }
    en mettant dans sheetName un des noms récupérés depuis le schema.

    ceci te charge l'ensemble des données de la feuille dans la table "XLData" du dataSet.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci !!

Discussions similaires

  1. fermer fichier excel via OLE
    Par richard038 dans le forum Delphi
    Réponses: 2
    Dernier message: 27/09/2006, 17h26
  2. probleme lancement excel avec Ole
    Par Mihalis dans le forum Delphi
    Réponses: 3
    Dernier message: 27/09/2006, 09h37
  3. Alignement vertical dans Excel avec OLE
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 6
    Dernier message: 20/11/2005, 15h10
  4. [Pilotage d'Excel en OLE] Comment sauvegarderr en csv ?
    Par caviar44 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 16/11/2005, 08h52
  5. Sauvegarde problématique sous excel par OLE
    Par ulysse66x dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 16/04/2003, 21h23

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