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

Accès aux données Discussion :

[C#] Comment implémenter le passage d'un fichier excell à un DataSet ?


Sujet :

Accès aux données

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [C#] Comment implémenter le passage d'un fichier excell à un DataSet ?
    Bonjour, dans le cadre d'un passage d'un fichier excell à une BD je voudrais remplir un dataSet avec mes données pour les réinjecter dans la BD par la suite.

    J'ai essayé trois méthodes différentes, la première consistait à une connection OLEDB qui se connectait au fichier excell le lisait et injectait les données dans le DataSet, l'ennui est que par ce moyen, les champs dépassant 255 caractères étaient tronqués.

    La seconde solution fut de passer le fichier en .CSV (séparateur et de le lire avec un StreamReader qui le recopiait dans le DataSet. Le résultat était concluant, car il résolvait le problème de longueur, mais cela tronquait tous les caractères accentués. Donc ... innaplicable.

    La troisième solution est de passer du fichier excell à un fichier XML. Et ensuite de réinjecter le fichier XML dans le dataSet par la méthode "ReadXML"
    le problème est que lorsque j'effectue la méthode, je n'obtiens aucune erreur, mais mon dataSet reste vide.

    Voici le code de la fonction : les deux premiers essais correspondent aux résultats infructueux décrits ci-dessus.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    string bd_travail = "XXXX";
     
    ////Lecture du fichier excel par ODBC
    //fonctionnel mais on pert les caractères dépassant 255 en longueur
     
    //DataSet fichier_lot = new DataSet();
    //String sConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
    //@"Data Source=H:\D____PRG\LOTS.xls;" +
    //@"Extended Properties=Excel 8.0;";
     
    //OleDbConnection objConn = new OleDbConnection(sConnectionString);
    //objConn.Open();
    //OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM
     [LOTS$]", objConn);
    //OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    //objAdapter1.SelectCommand = objCmdSelect;
    //objAdapter1.Fill(fichier_lot);
    //objConn.Close();
     
    //lecture du fichier excel par stream
    // - fonctionnel mais on pert les caractères accentués
     
    //string chemin = @"H:\D____PRG\LOTS.csv";
    //StreamReader test = new StreamReader(chemin);
    //DataSet fichier_lot = new DataSet();
    //string ligne;
    //string[] ligne_data;
    //fichier_lot.Tables.Add();
    //fichier_lot.Tables[0].Columns.Add();
    //fichier_lot.Tables[0].Columns.Add();
    //fichier_lot.Tables[0].Columns.Add();
    //fichier_lot.Tables[0].Columns.Add();
    //fichier_lot.Tables[0].Columns.Add();
    //fichier_lot.Tables[0].Columns.Add();
    //DataRow row_fichier_lot;
    //row_fichier_lot = fichier_lot.Tables[0].NewRow();
     
    //while (test.EndOfStream == false)
    //{
    //    row_fichier_lot = fichier_lot.Tables[0].NewRow();
    //    ligne = test.ReadLine();
    //    ligne_data = ligne.Split(';');
    //    row_fichier_lot[0] = ligne_data[0];
    //    row_fichier_lot[1] = ligne_data[1];
    //    row_fichier_lot[2] = ligne_data[2];
    //    row_fichier_lot[3] = ligne_data[3];
    //    row_fichier_lot[4] = ligne_data[4];
    //    row_fichier_lot[5] = ligne_data[5];
     
    //    fichier_lot.Tables[0].Rows.Add(row_fichier_lot);
    //}
     
    //lecture du fichier par XML
    string chemin = @"H:\D____PRG\LOTS.xml";
    StreamReader xml = new StreamReader(chemin);
    DataSet fichier_lot = new DataSet();
    fichier_lot.Tables.Add("Table1");
    fichier_lot.Tables[0].Columns.Add("Column1");
    fichier_lot.Tables[0].Columns.Add("Column2");
    fichier_lot.Tables[0].Columns.Add("Column3");
    fichier_lot.Tables[0].Columns.Add("Column4");
    fichier_lot.Tables[0].Columns.Add("Column5");
    fichier_lot.Tables[0].Columns.Add("Column6");
     
    fichier_lot.Tables[0].ReadXml("LOTS.xml");

    Voici à quoi ressemble mon fichier LOTS.xml :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <Root>
    −
        <Row>
    <Column1>10</Column1>
    <Column2>DEMOLITION - DEMONTAGES ET EVACUATION</Column2>
    <Column3>10</Column3>
    <Column4>AFBRAAKWERKEN</Column4>
    <Column6>1</Column6>
    </Row>
    −
        <Row>
    <Column6>1</Column6>
    </Row>
    −
        <Row>
    <Column1>10.01</Column1>
    <Column2>DONNEE GENERALE</Column2>
    <Column6>1</Column6>
    </Row>
    −
        <Row>
    <Column1>10.02</Column1>
    −
        <Column2>
    Coût moyen au m2 pour plateau de bureau (surface brut)
    </Column2>
    <Column3>10.02</Column3>
    <Column4>Uitbreken van wanden in metselwerk, 10 cm dik</Column4>
    <Column5>m2</Column5>
    <Column6>1</Column6>
    </Row>

    Lors de l'exécution du code, lorsque je consulte fichier_lot celui ci est entièrement vide ... j'aimerais savoir si il existe selon vous une autre solution, et le cas échéant quel pourrait être le problème à la mienne.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Kajinshirha
    ..La seconde solution fut de passer le fichier en .CSV (séparateur et de le lire avec un StreamReader qui le recopiait dans le DataSet. Le résultat était concluant, car il résolvait le problème de longueur, mais cela tronquait tous les caractères accentués. Donc ...
    Attention, tu n'a pas peut être pas ecrit avec le bon encodage. StreamWriter et StreamReader ont une surcharge permettant de définir un paramètre System.Text.Encoding . En général, System.Text.Encoding.Default doit suffire mais il est possible de definir l'Unicode par exemple

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Cela fonctionne en effet,

    Merci de ta réponse !

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 28/11/2011, 14h55
  2. Réponses: 12
    Dernier message: 23/03/2009, 20h48
  3. passage d'un fichier excel a une bd
    Par aymenagrebi dans le forum Oracle
    Réponses: 1
    Dernier message: 12/01/2007, 12h32
  4. Réponses: 3
    Dernier message: 23/09/2006, 16h19
  5. Réponses: 2
    Dernier message: 14/05/2006, 20h36

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