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++Builder Discussion :

Erreur de lecture fichier Excel


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut Erreur de lecture fichier Excel
    Salut,

    Voila, mon programme lit des donn�e dans un fichier Excel et les stok dans des variable pour travailler dessus.
    Cette ligne si marche super bien : (rr[j] est de type long)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    rr[j]=ADOTable1->Fields->Fields[12]->Value;
    Sauf quand la cellule Excel est vide, dans se cas la, j'ai comme erreur :
    Impossible de convertir le variant de type (Null) en type (Integer)
    J'ai esseyer de m�tre se teste si :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if (ADOTable1->Fields->Fields[12]->Value==NULL)
    Mais sa ne marche pas (il d�tecte les 0 uniquement).
    J'ai aussi eseyer avec "" � la place de NULL, mais sans r�sultas.

    Si vous avais une id�e, merci.

  2. #2
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Salut fpascal
    J'ai fait un essai comme ceci, avec un Variant que l'on ne defini pas
    Variant a;
    a.Empty();
    if(a.IsEmpty())
    {
    ShowMessage("Non defini ");
    }

  3. #3
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Je pense ne pas avoire bien compris, j'ai tester sa :
    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
     
    Variant test;
    long rr[31];
     
     
    ADOTable1->First();
     for (j = 0; j < tjour; j++) {
      test.Empty();
      test=ADOTable1->Fields->Fields[12]->Value;
      if (test.IsEmpty()) {
       rr[j]=999999;
     
      }
      else {
       rr[j]=ADOTable1->Fields->Fields[12]->Value;
      }
      ShowMessage(rr[j]);
      ADOTable1->Next();
     }
    Mais j'ai toujours la m�me erreur des que j'arrive � une cellule vide.

  4. #4
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Dans ton dernier code sur quelle ligne se situe ton erreur, quel est la valeur que tu recupere de ta table dans le Variant test.
    De plus tu ecrit
    if (test.IsEmpty()) {
    rr[j]=999999;
    pourquoi ne pas faire un teste a l'enregistrement de ta cellule Excel dans la table, si elle est NULL alors elle prend la valeur " 999999 " ou autre chose qui te convienne

  5. #5
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    La programme plante � la ligne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    test=ADOTable1->Fields->Fields[12]->Value;
    pourquoi ne pas faire un teste a l'enregistrement
    maleureusement, je ne peut pas m�tre la valleur � l'ecriture dans le fichier Excell, car je n'ecris jamais dans ce fichier : en faite je vais resevoire tous les mois un fichier Excell par mail, et mon programme doit convertire les donn�e dans un format lisible par un autre programme qui existe d�jat. Le ShowMessage(rr[j]) n'est la que pour controle pandans le d�velopement, il vas disparaitre des que la lecture marche.
    Le programme qui lit les donn�e, travaille avec 999999 pour une valeur absante (qui n'est pas la m�me chose qu'une valleur � 0)

  6. #6
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Ton champ est de quel format ( chaine, entier ...)

  7. #7
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Toute les cellules excell du fichier son en format standard.

  8. #8
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Je ne pensais pas a Excel mais au champ ici " 12 " de ta table, car la tu recupere bien une valeur stockee dans ta table et non dans Excel, tu a donc du en definie le format ( chaine, entier ...)
    test = ADOTable1->Fields->Fields[12]->Value;

  9. #9
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Non, je lit directement dans Excel, via ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    ADOConnection1->ConnectionString ="Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq="+OpenDialog1->FileName+";DefaultDir="+ExtractFilePath(OpenDialog1->FileName);
    ADOConnection1->Connected=true;
    ADOTable1->Active=true;

  10. #10
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Apres avoir bien galere j'ai fais ceci, je ne sais pas si cela va t'aider
    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
     
    // chemin de la base
    AnsiString FileName = "C:\\Classeur1.xls";
    //AnsiString provider = "Provider=Microsoft.Jet.OLEDB.4.0;";
    // on connecte avec ADOConnection
    //        ADOConnection1->Provider = provider;
            Form1->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
            ADOConnection1->Connected = true;
            ADOQuery1->Close();
            ADOQuery1->SQL->Clear();
            ADOQuery1->SQL->Add("SELECT * FROM [Feuil1$]");
            ADOQuery1->Open();
            ADOQuery1->First();
    Variant text = ADOQuery1->Fields->Fields[0]->Value;
    if(VarIsNull(text))
    {
    ShowMessage("Non defini ");
    }

  11. #11
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Je vien d'esseyer d'appliquer tas solution � mon programme, mais je me retrouve avec un erreur � la conpilation sur cette ligne si :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ADOQuery1->SQL->Add("SELECT"+"F3 = " + IntToStr(nannee) + " AND F2 = " + IntToStr(nmois) + " AND F4 = '" + station[i] +"' FROM [Feuil1$]");
    je recois comme erreur :
    [BCC32 Erreur] Unit1.cpp(198): E2085 Addition de pointeur incorrecte

  12. #12
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Alors le code pour charger la base avec Excel ( "Provider=Microsoft.Jet.OLEDB.4.0;" ) est prevu pour ADO, tel qu'il est ecrit on suppose que la premiere ligne du tableau Excel contient les noms de champs, je ne suis pas tres bon en base de donnees encore moins en SQL mais pour lire un champ ceci fonctionne pour lire la colonne " Prenom "
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ADOQuery1->SQL->Add("SELECT [Prenom] FROM [Feuil1$]");
    les champs de mon tableau etaient Nom Prenom Adresse ....

  13. #13
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Je m�rite le fouet. Mon sql devien vieu, j'ai trouver la bonne requ�te :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ADOQuery1->SQL->Add("SELECT * FROM [Feuil1$] WHERE F3 = '" + IntToStr(nannee) + "' AND F2 = '" + IntToStr(nmois) + "' AND F4 = '" + station[i] + "'");
    (F2,F3 et F4 son bien mes niom de collone)

    se qui fait que le programme marche.

    Merci beaucoup blondelle, l'ADOQuery (que je ne connaisai pas) ne plante pas avec les cellules vide, contrairement au ADOTable que j'utiliser.

    Encore merci.

  14. #14
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Je suis contant pour toi
    A+

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. probleme lecture fichier excel
    Par snetechen dans le forum Documents
    R�ponses: 1
    Dernier message: 04/07/2007, 08h41
  2. [Excel] Lecture fichiers Excel sans Excel
    Par neometaller dans le forum Biblioth�ques et frameworks
    R�ponses: 1
    Dernier message: 26/04/2007, 09h32
  3. Lecture fichier Excel
    Par marie20 dans le forum C++Builder
    R�ponses: 4
    Dernier message: 27/03/2007, 15h02
  4. [VB.net] Lecture fichier excel, cellule fusionn�e
    Par UNi[FR] dans le forum Windows Forms
    R�ponses: 1
    Dernier message: 16/08/2006, 13h12
  5. [SQL Server 2000] erreur lors importation fichier excel
    Par Abydos Business Group dans le forum MS SQL Server
    R�ponses: 1
    Dernier message: 07/03/2006, 09h24

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