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

HyperFileSQL Discussion :

Aide pour exporter HFSQL vers fichier EXCEL existant [HF25]


Sujet :

HyperFileSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut Aide pour exporter HFSQL vers fichier EXCEL existant
    Bonjour le Forum,

    Pour la mise en place d'un petit projet de gestion de courrier, il faudrait que j'arrive à exporter chaque jour le contenu d'un fichier HFSQL vers un fichier EXCEL.
    Le truc c'est que le fichier HFSQL sera "purgé" (aucun intérêt de conserver un double je pense) chaque jour mais le fichier EXCEL lui doit répertorier la gestion quotidienne du courrier.
    De ce fait, je cherche comment faire pour que mon export vienne bien se positionner après la dernière ligne remplie de mon fichier EXCEL.
    Pourriez-vous m'expliquer comment faire cela ?

    Merci d'avance pour les réponses.

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 343
    Points : 9 482
    Points
    9 482
    Par défaut
    Bonjour samsam,

    Il y a 2 méthodes :
    - soit passer par OLE (implique que Excel soit installé sur le poste qui réalisera l'export)
    - soit utiliser les fonctions XLSxxx

    Si tu n'as pas de mise en forme à faire, privilégie les fonctions XLSxxx.

    Pour la façon de faire : comme d'habitude, détaille comment tu le ferais "à la main" pour te donner la bonne approche.

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 854
    Points : 5 391
    Points
    5 391
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Pour commencer, regarde du côté de HExporteXLS

  4. #4
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Bonjour frenchsting,
    Bonjour Voroltinquo,

    Tout d'abord un grand merci pour vos réponses.

    Alors j'ai creusé un peu vos différentes pistes :
    - j'ai trouvé la fonction xlsNbLigne qui semble pouvoir m'indiquer le nombre de lignes dans un fichier Excel : mais il semble que celle-ci rencontre des bugs de comptage
    - j'ai aussi trouvé ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    IdFichierXLS est un entier
    ligne est un entier = 1
     
    IdFichierXLS = xlsOuvre("CheminPDF")
    TANTQUE (xlsDonnée(IdFichierXLS,ligne,2) <> "")
    	ligne =ligne+1
    FIN
    Info("nb de ligne : "+ ligne)
    qui lui a l'air de bien fonctionner si ce n'est qu'il compte la dernière ligne (vide) dans son comptage.

    Si je dois réfléchir à la façon de procéder : je pense qu'il faut :
    - ouvrir le fichier excel dans laquelle on veut connaître le nombre de ligne (fonction xlsOuvre ->ok)
    - compter les lignes qui ne sont pas vides -> la je suis pas encore impeccable ^^
    - se positionner sur la première ligne vide de mon fichier excel -> la aussi je dois trouver
    - importer le contenu de ma base HFSQL (fonction HExporteXLS)

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 343
    Points : 9 482
    Points
    9 482
    Par défaut
    Bonjour samsam007,

    Ton bout de code te permet de te positionner sur la première ligne vide.

    Pour le XexportXLS, il va exporter tout dans un fichier xls. Ensuite, il faudra que tu parcoures le fichier créé pour copier les lignes dans ton "vrai" fichier. Une autre solution est de parcourir ton fichier HF pour copier les données utilisées dans le "vrai" fichier Excel.

  6. #6
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Bonjour frenchsting,

    Ok donc je peux me servir de ce bout de code pour me positionner au bon endroit dans mon fichier xls : me reste plus qu'à trouver comment exploiter cela ^^
    Ah je pense que le plus simple et rapide est de parcourir le fichier HF est de la copier dans mon fichier xls, non?
    Un intérêt de faire cela en 2 étapes ?

  7. #7
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 343
    Points : 9 482
    Points
    9 482
    Par défaut
    [QUOTE=samsam007;11555114Ah je pense que le plus simple et rapide est de parcourir le fichier HF est de la copier dans mon fichier xls, non?[/QUOTE]
    Oui, c'est cela
    Ensuite, tu vas faire une boucle de parcours de ton fichier HF pour ajouter les infos. Je reprends l'exemple de Windev concernant XLSSauve (https://doc.pcsoft.fr/?1000018057&na...sauve_fonction) :
    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
    MaFeuille est un xlsDocument
    NomFichier est une chaîne
    NomFichier = fSélecteur(fRepExe(), "", "Sélectionnez un fichier.....", "Tous fichiers (*.*)" + TAB + "*.*", "*", fselOuvre + fselExiste)
    SI NomFichier = "" ALORS RETOUR
    MaFeuille = xlsOuvre(NomFichier, xlsEcriture)
     
    // Recherche de la première ligne vide
    i = DernièreLigneVide
    // On va mettre OK dans la case A 25
    Hlitpremier(MonfichierHF, cle)
    Tantque pas hendehors(MonfichierHF)
      MaFeuille[i,"A"] = MonfichierHF.Valeur1
      MaFeuille[i,"B"] = MonfichierHF.Valeur2
    ...
      MaFeuille[i,"Z"] = MonfichierHF.Valeur26
     
      HlitSuivant(MonfichierHF, cle)
    Fin
    // Sauvegarde
    xlsSauve(MaFeuille)
    Non testé (et non testable en l'état )

  8. #8
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Alors voilà le petit bout de code qui va bien .... ou à peu près ^^

    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
    MaFeuille	est un xlsDocument
    NomFichier	est une chaîne
    ligne est un entier = 1
     
    NomFichier = fSélecteur(fRepExe(), "", "Sélectionnez un fichier.........", "Tous fichiers (*.*)" + TAB + "*.*", "*", fselOuvre + fselExiste)
    SI NomFichier = "" ALORS RETOUR
    MaFeuille	= xlsOuvre(NomFichier, xlsEcriture)
     
    TANTQUE (xlsDonnée(MaFeuille,ligne,2) <> "")
    	ligne = ligne+1
    FIN
     
    HLitPremier(suivicourrier,IDsuivicourrier)
    TANTQUE PAS HEnDehors(suivicourrier)
    	MaFeuille[ligne,"A"] = suivicourrier.date
    	MaFeuille[ligne,"B"] = suivicourrier.expediteur
    	MaFeuille[ligne,"C"] = suivicourrier.libelle_courrier
    	MaFeuille[ligne,"D"] = suivicourrier.utilisateur
    HLitSuivant(suivicourrier,IDsuivicourrier)
    ligne++
     
    FIN
    //Sauvegarde
    xlsSauve(MaFeuille)
    xlsFerme(MaFeuille)
    Avec ce code, j'arrive bien à ouvrir mon xls récapitulatif de courrier, parcourir mon fichier HF et copier les lignes !!
    En revanche, si pas hasard, l'utilisateur décide de supprimer le contenu d'une ligne alors là ça se complique :
    - le code identifie cette ligne comme vide du coup et commence à écrire dedans
    - mais en plus ne décale pas la ligne de dessous qui est elle du coup non vide et efface son contenu

    D’où ma question : est-il possible de tester dernière ligne vide + lignes d'après (pas seulement celle d’après mais les suivantes aussi ... ou cas ou l'utilisateur fasse des "trous" dans le fichier xls ...même si c'est pas très malin je vous l'accorde ^^!!) pour être vraiment certain d'écrire les nouvelles informations à la fin du fichier xls existant ?

    Merci d'avance pour vos retours.

  9. #9
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 854
    Points : 5 391
    Points
    5 391
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    En lisant la doc concernant xlsDocument et en particulier les propriétés associé, on trouve facilement la solution (comme souvent avec Windev)

  10. #10
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Bonjour Voroltinquo,

    Merci pour le retour. Je pense que vous faites référence à la fonction "xlsNbLigne" qui en effet permet de connaître le nombre de ligne d'un xls et en plus gère les lignes vides.
    J'étais partis sur autre chose car j'avais lu des petits bugs concernant cette fonction ^^
    J'ai repris mon bout de code et insérer la fonction suivante qui permet en effet de prendre en compte si il y a une ou plusieurs lignes vides dans le xls.
    J'ai voulu m'amuser et tester l'exactitude de cette fonction :
    - si on met une couleur de fond dans une ligne -> pas de soucis la ligne est considérée comme vide
    - en revanche si on supprime (touche "supp") le contenu de plusieurs lignes -> la fonction considère encore les lignes comme "non-vides" et commence l'écriture après ^^

    En utilisant le code précédent, cela corrigeait ce bug! Mais d'autres étaient encore présent ...
    Voilà pourquoi je posais la question de savoir si il existait sous Windev quelque chose d'un peu plus sûr.
    Après à moi et aux utilisateurs d’adopter une bonne pratique et éviter de laisser un xls avec plein de cellule vide ou de chose bizarre. Mais je préfère rester le plus prudent possible et précis.

  11. #11
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 343
    Points : 9 482
    Points
    9 482
    Par défaut
    Bonjour samsam07,

    une idée : tu testes plusieurs lignes vides de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TANTQUE pas (xlsDonnée(MaFeuille,ligne,2) = "" _et_ xlsDonnée(MaFeuille,ligne+1,2) = "" _et_ xlsDonnée(MaFeuille,ligne+2,2) = "" _et_ ... _et_ xlsDonnée(MaFeuille,ligne+xxx,2) = "")
    	ligne = ligne+1
    FIN
    A toi de définir combien de lignes vides tu dois tester

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

Discussions similaires

  1. Exporter Access vers fichier Excel existant sous java
    Par clamar45 dans le forum Documents
    Réponses: 0
    Dernier message: 30/07/2009, 11h09
  2. MARCO pour exporter table dans fichier EXCEL
    Par minaprs dans le forum Macro
    Réponses: 1
    Dernier message: 16/04/2009, 17h21
  3. export données vers fichier excel
    Par pascale86 dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2009, 11h55
  4. Export SQL vers fichier EXcel
    Par The Bro dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2008, 19h09
  5. Exportation HTML/PHP vers fichier Excel existant
    Par fthem dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 10/01/2008, 15h07

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