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 :

dataset et excel


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Par défaut dataset et excel
    Bonjour,
    je suis en train de développer une application avec C# .NET 2.0
    je doit récupérer des données depuis un fichier excel puis les mettre dans ma base
    J'ai utilisé un dataset pour récupérer les lignes de mon fichier excel, ça marche bien mais le problème est que j'utilise de gros fichiers excel (ça peut atteindre plus que 64000 lignes) et mon dataset n'arrive à lire que 14877 lignes puis il m'affiche le message suivant : "L'index et le longueur doivent faire référence à un emplacement situé dans la chaine. Nom du paramètre : length"
    j'ai essayé avec un autre fichier excel et le nombre de lignes traitées reste le même.
    est ce que je peut redimentionner le dataset ou découper le fichier excel??
    est ce que quelq'un peut m'aider svp c'est urgent

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 49
    Par défaut
    Le message que tu obtiens indique que l'index que tu utilises pour parcourir ton dataset n'est pas correct.
    J'ai utilisé des dataTables contenant plus d'un million de lignes, et il n'y a pas eu de problèmes.
    Vérifie que cet index est bien incrémenté.

    Sinon, si le problème vient du fichier excel, tu peux essayer de créer une nouvelle feuille quand tu atteins un certain nombre de lignes

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Par défaut
    voila mon code, je ne crois pas qu'il y a un problème avec l'index:

    try
    {
    LireDeExcel excelReader = new LireDeExcel(args[0], reqeuteExcel);
    LireDeBD dbReader = new LireDeBD(requeteBD, n);

    foreach(DataRow excelDataRow in excelReader.MyDataSet.Tables[0].Rows)
    {
    int testEqualite=0; //tester si un enregistrement de la table excel existe déja dans la base

    string[] ExcelElement = new string[m]; //Contient les valeurs à ajouter dans la base


    //Pour éliminer les espaces au début et à la fin des elements extraits du fichier excel
    //Puis les mettre dans un tableau
    for (int k = 0; k < 3; k++)
    {
    ExcelElement[k] = excelDataRow[k].ToString().TrimStart(' ').TrimEnd(' ');
    }

    //Séparer le BIN du numero Client dans le numero de carte
    ExcelElement[3] = ExcelElement[2].Substring(6, 10); //numero Client
    ExcelElement[2] = ExcelElement[2].Substring(0, 6); //numero bin

    for (int k = 4; k < t; k++)
    {
    ExcelElement[k] = excelDataRow[k-1].ToString().TrimStart(' ').TrimEnd(' ');
    }

    //Extraire le nom du protocole du nom du magasin
    ExcelElement[4] = new Protocole().Exist(ExcelElement[4]);

    foreach (DataRow dbDataRow in dbReader.MyDataSet[0].Tables[0].Rows)
    {
    testEqualite = 0;
    for (int i = 0; i < 4; i++)
    {

    if (ExcelElement[i] == dbDataRow[i].ToString())
    {
    //si l'enregistrement existe déja, on aura testEgalite=4
    testEqualite++;
    }
    }

    if (testEqualite == 4)
    {
    //Pas besoin de terminer le parcours de la table de la base
    break;
    }

    }

    //Si l'enregistrement n'existe pas dans la base
    if (!(testEqualite == 4))
    {
    //Traitement d'ajout de l'enregistrement à la base
    AjouterDansBD newRow = new AjouterDansBD(requeteAjout, ExcelElement);
    }
    }

    }
    catch (Exception exc)
    {
    Console.WriteLine(exc.Message);
    }

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Par défaut
    et voila la classe qui permet de lire du fichier excel:

    class LireDeExcel
    {
    //Variable de connection au fichier excel
    private OleDbConnection con;

    public OleDbConnection Con
    {
    get { return con; }
    set { con = value; }
    }

    //Variable dans laquelle on va enregistrer les données extraites du fichier excel
    private DataSet myDataSet;

    public DataSet MyDataSet
    {
    get { return myDataSet; }
    set { myDataSet = value; }
    }

    public LireDeExcel( string fileName, string requete)
    {
    DataSet ds = new DataSet();
    con = new OleDbConnection(
    "provider=Microsoft.Jet.OLEDB.4.0;data source= " + fileName + ";Extended Properties=Excel 8.0;");
    OleDbDataAdapter myCommand = new OleDbDataAdapter(requete, con);
    try
    {
    myCommand.Fill(ds);
    MyDataSet = ds;
    }
    catch(Exception e)
    {
    Console.WriteLine(e.ToString());
    }
    finally
    {
    con.Close();
    }
    }

    }

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Par défaut
    j'ai trouvé la solution, mon code est correct mais il y avait une erreur dans le format d'une ligne dans le fichier excel (la ligne 14877 )

Discussions similaires

  1. Probleme export de Dataset a Excel
    Par mactwist69 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 08/07/2008, 15h49
  2. [VB.net] Exporter un DataSet vers Excel
    Par Speranza dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/12/2006, 09h18
  3. Comment enregistrer valeurs d'une DataSet sous Excel?
    Par alfadev dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/08/2006, 14h33
  4. [VB.NET] Transférer les données d'un dataset vers excel ??
    Par beegees dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/06/2006, 18h59
  5. [VB.NET] [EXCEL] Ecrire le contenu d'un Dataset ds Excel
    Par grom91 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 08/04/2005, 12h13

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