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

WinDev Discussion :

problème importation fichiers xls vers HF [WD18]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Points : 39
    Points
    39
    Par défaut problème importation fichiers xls vers HF
    Bonsoir à tous
    j 'ai plusieurs fichier xls a importer leurs données vers ma base HF mon problème se voit lors de l'enregistrement des données pour mieux me comprendre voici un exemple:
    fichier xls1 contient : quatre colonnes ----> l'importation et l'enregistrement est bien réussi
    fichier xls2 contient : trois colonnes ----> ici j'aperçois l'ajout du quatrième colonne alors qu il y a que trois.
    NB: que les fichiers xls utilise les mêmes colonne la seul déférences c le nombre des colonne.
    voici mon code:
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    // mise en place d'un code pour importer les données d'un fichier EXCEL 
    t est un entier
     
    MaFeuille est un xlsDocument
    sNomFichierXls est une chaîne
    sNomFichierXls = fSélecteur("", "", ...
    "Sélectionnez un fichier.....", ...
    "Tous fichiers (*.*)"+TAB+"*.*", "*", fselOuvre + fselExiste)
    SI sNomFichierXls = "" ALORS RETOUR
    MaFeuille = xlsOuvre(sNomFichierXls,xlsCompatible)
     
    nligne est un entier
    nligne = xlsNbLigne(MaFeuille,Vrai)
    //afficher des renseignements du fichier xls
    POUR c=11 A 11
    	LIB_SansNom6..Libellé=xlsDonnée(MaFeuille,c,12,Faux)
    	LIB_SansNom3..Libellé=xlsDonnée(MaFeuille,c,8,Faux)
    	LIB_SansNom4..Libellé=xlsDonnée(MaFeuille,c,4,Faux)	
    FIN
    POUR f = 9 A 9
    	LIB_SansNom5..Libellé=xlsDonnée(MaFeuille,f,4,Faux)
    	LIB_SansNom7..Libellé=xlsDonnée(MaFeuille,f,12,Faux)
    FIN
    Maclass est un entier
    POUR b = 5 A 5
    	nEval est un entier =xlsDonnée(MaFeuille,b,9,Faux)//num evaluation
       nSemestr est un entier=xlsDonnée(MaFeuille,b,7,Faux)//num semestre
       sMatr est une chaîne=xlsDonnée(MaFeuille,b,11,Faux)//code matiére 
     
     
    SI xlsDonnée(MaFeuille,b,15,Faux)=1061101010 ALORS
    	Maclass=1
    FIN
    SI xlsDonnée(MaFeuille,b,15,Faux)=1062101010 ALORS
    	Maclass=2
    FIN
    SI xlsDonnée(MaFeuille,b,15,Faux)=1063101010 ALORS
    	Maclass=3
    FIN
    SI xlsDonnée(MaFeuille,b,15,Faux)=1064101010 ALORS
    	Maclass=4
    FIN
    SI xlsDonnée(MaFeuille,b,15,Faux)=1065101010 ALORS
    	Maclass=5
    FIN
    SI xlsDonnée(MaFeuille,b,15,Faux)=1066101010 ALORS
    	Maclass=6
    FIN
    FIN
    SAI_matr=sMatr
    SAI_class=Maclass
    // nous partirons de la ligne 2 pour ne pas prendre en compte les entêtes de colonne.
    POUR t = 16 A nligne
     snumnat est une chaîne=xlsDonnée(MaFeuille,t,3,Vrai)
    	SI sMatr="#0017#" ALORS
    		// Recherche l'enregistrement
    		HLitRecherchePremier (CC2,numnat,snumnat )
    		SI HTrouve(CC2) ALORS
    			CC2.cLSS=Maclass
    			CC2.AMZE1=xlsDonnée(MaFeuille,t,7,Vrai)
    			HModifie(CC2)
    		SINON
    			CC2.cLSS=Maclass
    			CC2.numnat=snumnat
    			CC2.AMZE1=xlsDonnée(MaFeuille,t,7,Vrai)
    			HAjoute(CC2,hIgnoreIntégrité)
    		FIN
     
    	FIN
     
    	SI sMatr="#0011#" ET Maclass=1 ALORS
    		JAUGE_1..Visible=Vrai
     
    		POUR I = JAUGE_1..BorneMin _A_ JAUGE_1..BorneMax
    			JAUGE_1 = I
     
    		HLitRecherchePremier (CC2,numnat, snumnat)
    		SI HTrouve () ALORS
    			CC2.cLSS=1
    			CC2.A3E1=xlsDonnée(MaFeuille,t,7,Vrai)
    			CC2.A6E1=xlsDonnée(MaFeuille,t,9,Vrai)
    			CC2.A4E1=xlsDonnée(MaFeuille,t,11,Vrai)
    			CC2.A1E1=xlsDonnée(MaFeuille,t,13,Vrai)
    			CC2.A5E1=xlsDonnée(MaFeuille,t,15,Vrai)
    			HModifie(CC2)
    		SINON
    			CC2.cLSS=1
    			CC2.numnat=snumnat 
    			CC2.A3E1=xlsDonnée(MaFeuille,t,7,Vrai)
    			CC2.A6E1=xlsDonnée(MaFeuille,t,9,Vrai)
    			CC2.A4E1=xlsDonnée(MaFeuille,t,11,Vrai)
    			CC2.A1E1=xlsDonnée(MaFeuille,t,13,Vrai)
    			CC2.A5E1=xlsDonnée(MaFeuille,t,15,Vrai)
    			HAjoute(CC2,hIgnoreIntégrité)
    			FIN
    			FIN
    			JAUGE_1..Visible=Faux
     
    	FIN
    	SI sMatr="#0011#" ET Maclass=2 ALORS
     
    		// Recherche l'enregistrement
    		HLitRecherchePremier (CC2,numnat, snumnat)
    		SI HTrouve()
    			CC2.cLSS=2
    			CC2.A3E1=xlsDonnée(MaFeuille,t,7,Vrai)
    			CC2.A6E1=xlsDonnée(MaFeuille,t,9,Vrai)
    			CC2.A4E1=xlsDonnée(MaFeuille,t,11,Vrai)
    			CC2.A1E1=xlsDonnée(MaFeuille,t,13,Vrai)
    			HModifie(CC2)
    		SINON
    			CC2.cLSS=2
    			CC2.numnat=snumnat 
    			CC2.A3E1=xlsDonnée(MaFeuille,t,7,Vrai)
    			CC2.A6E1=xlsDonnée(MaFeuille,t,9,Vrai)
    			CC2.A4E1=xlsDonnée(MaFeuille,t,11,Vrai)
    			CC2.A1E1=xlsDonnée(MaFeuille,t,13,Vrai)
    			HAjoute(CC2,hIgnoreIntégrité)
    		FIN
    		FIN
     
    	FIN

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Points : 39
    Points
    39
    Par défaut
    je viens de trouver une solution très simple c de déclarer les autre colonne null comme : fichierX.xx=""

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 451
    Points
    2 451
    Par défaut
    Bonjour

    Je n'ai pas décortiqué votre code, mais sauf erreur, vous n'utilisez pas XlsNbColonne.
    Cette instruction devrait vous permettre d'adapter votre import en fonction du nombre de colonnes.

    Hemgé

  4. #4
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 167
    Points
    167
    Billets dans le blog
    1
    Par défaut Une autre méthode en quelques lignes
    Bonjour,
    Une autre méthode plus rapide consiste à mettre le fichier Excel en presse papier, puis à déverser le presse-papiers dans une zone de texte.
    Ensuite vous déversez la variable dans un tableau vierge.
    Enfin vous transférez votre tableau ligne à ligne.
    L'avantage est que vous pouvez ajouter autant de feuilles Excel dans la même variable et tout faire en une fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Voici un exemple de code transférant une sélection Excel vers Table1 :
    tablesupprimetout(Table_vierge.table1)
    babouin = extraitchaine(zone_de_résultats, rangpremier, rc)
    tableajoute(Table_vierge.table1, babouin)
    tantque babouin <> EOT
    babouin = extraitchaine(zone_de_résultats, rangsuivant, rc)
    tableajoute(Table_vierge.table1, babouin)
    fin
    Notez que l'usage du presse-papiers est très rapide et permet un contrôle visuel.
    Cordialement

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

Discussions similaires

  1. importation des données d'un fichier XLS vers un Grid
    Par soumasimsim dans le forum Débuter
    Réponses: 3
    Dernier message: 01/05/2011, 18h10
  2. importer d'un fichier xls vers la bd
    Par foulla dans le forum WinDev
    Réponses: 4
    Dernier message: 24/10/2007, 22h32
  3. Importation fichier plat vers Mysql
    Par xender dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/05/2006, 22h36
  4. import fichier excel vers mysql
    Par Groshaeny Roger dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 03/04/2006, 20h31
  5. [IMPORTER] fichier .xls vers postgresql
    Par gloogloo dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 31/03/2005, 11h30

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