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

Bases de données Delphi Discussion :

Delphi ne reconnait pas "Excel97" dans la clause "Uses"


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 97
    Points : 59
    Points
    59
    Par défaut Delphi ne reconnait pas "Excel97" dans la clause "Uses"
    Bonjour tout le monde,

    j'ai une toute petite question...
    j'ai trouvé sur ce site une procédure d'exportation de données vers Excel (publiée en 2006)
    mais mon Delphi 10.3 ne reconnait pas l'unité "excel97" dans la clause "Uses"
    j'ai essayé des trucs du genre "excel12" ou "excel14" mais c'est pareil,
    sachant que j'ai Excel 2016 installé.

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Bonjour,

    cela dépend surement du Excel installé sur le poste et déclaré lors de l'installation de Delphi.

    Chez moi avec Excel 2000 il faut ajouter dans les Uses : OleServer et Excel2000

    Sinon tu poses un TExcelApplication sur la fiche (onglet Serveur) et tu compiles. Delphi va ajouter les bons Uses

    A+
    Charly

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Merci pour votre réponse Charly910,
    pour commencer, le TExcelApplication n'existe pas dans ma palette de composants (delphi 10.3 édition Architecte)
    donc j'ai rajouté manuellement "Excel2000" et "Oleserver", c'est reconnu par Delphi;
    par contre, une variable déclarée "RangeE" du type "Excel2000.Range" ("Excel97.range" avant modification)
    n'est pas reconnue.
    je préfère vous donner le lien vers la procédure pour mieux comprendre:
    https://www.developpez.net/forums/d6...csv-clipboard/

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Bonjour,
    je n'ai pas de base de données sous la main et ne peux pas tester avec un DbGrid.

    Essaye un variant pour RangeE.

    A+
    Charly

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Sinon tu peux essayer de t'inspirer de la FAQ qui exporte un StringGrid

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Bonjour

    Les composants Office ne sont plus activés par défaut : il faut aller dans Composants / Installer des composants pour cocher la version de paquet que l'on désire utiliser.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Rebonjour à tous !
    Effectivement pprem, je viens d'installer les composants office,
    et du coup, maintenant je trouve le composant TExcelApplication, et Delphi m'a généré automatiquement les unités "Vcl.OleServer" et "Excel2000";
    j'ai recompilé, mais la propriété "Range" de la variable "RangeE" n'est toujours pas reconnue.

    J'ai donc tapé "Excel2000." pour afficher ses propriétés, et j'ai constaté qu'il y'en a pas "Range" parmi, j'en déduis que la propriété "Range" est propre à "Excel97" et n'existe pas dans "Excel2000".

    La question maintenant est:
    Quelle est la propriété de "Excel2000" équivalente à "Range" de "Excel97" ?
    ou bien comment faire pour contourner ce probléme ?

  8. #8
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par youce90 Voir le message
    J'ai donc tapé "Excel2000." pour afficher ses propriétés, et j'ai constaté qu'il y'en a pas "Range" parmi, j'en déduis que la propriété "Range" est propre à "Excel97" et n'existe pas dans "Excel2000".

    La question maintenant est:
    Quelle est la propriété de "Excel2000" équivalente à "Range" dans "Excel97" ?
    ou bien comment faire pour contourner ce probléme ?
    Là, malheureusement, je ne peux que t'inciter à regarder la doc de Microsoft car ce n'est pas la seule modification intervenue dans son interface qui aura un impact sur tes projets existants.

  9. #9
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Citation Envoyé par youce90 Voir le message
    J'ai donc tapé "Excel2000." pour afficher ses propriétés, et j'ai constaté qu'il y'en a pas "Range" parmi, j'en déduis que la propriété "Range" est propre à "Excel97" et n'existe pas dans "Excel2000".

    La question maintenant est:
    Quelle est la propriété de "Excel2000" équivalente à "Range" de "Excel97" ?
    ou bien comment faire pour contourner ce probléme ?
    Bonjour,

    Sans voir un bout de votre code, c'est difficile de vous aider. Créez-vous l'objet OLE de l'application Excel ?

    Voici ce que j'ai l'habitude d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
    ExcelApp : Variant;
    begin
    
    ExcelApp := CreateOleObject('Excel.Application');
    ExcelApp.Workbooks.Add;
    
    ExcelApp.Visible := true; //excel visible
    ...
    ExcelApp.Range['B2','B3'].Merge(false);
    ...

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Nabil74

    je vous fais un petit résumé sur la situation:
    j'ai trouvé une procédure sur ce site qui fait l'exportation des données vers Excel.
    ce n'est pas moi qui l'a écrite. j'essaie juste de l'utiliser, mais j'arrive pas.

    et j'ai donné le lien vers la procédure, le voilà !
    https://www.developpez.net/forums/d6...csv-clipboard/

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Bonjour,

    oui, mais comme dit Nabil74 donne plutôt ton code à toi, avec Excel2000

    A+
    Charly

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Et en déclarant en variant (comme l'a déjà proposé Charly910) ?
    Bien sûr il faut rajouter variants dans la liste des uses
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  13. #13
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    @ youce90 :

    Veux-tu exporter tes données vers Excel sans passer par RANGE ?
    Si oui, je peux te fournir un code que j'utilise.
    Quelle base de données utilises-tu?

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par NABIL74 Voir le message
    @ youce90 :

    Veux-tu exporter tes données vers Excel sans passer par RANGE ?
    Si oui, je peux te fournir un code que j'utilise.
    Quelle base de données utilises-tu?
    J'aimerai bien @Nabil74
    mais dans ce cas, je dois vous donner plus de détails;
    en fait je l'ai déjà fait, j'ai pu exporter les données d'un TAdoquery
    en utilisant l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adoconnection1.Execute('select * into MaFeuille  in "MonClasseur.xls" "excel 12.0;" from MaTable')
    par contre, ce que je veux faire maintenant c'est d'exporter le résultat filtré dynamiquement (filtration au cours de l'exécution)
    j'ai essayé de modifier dynamiquement le code précédent, en rajoutant ce qu'il y a dans la propriété "Filter" de mon AdoQuery.
    ça se compile, mais ça n'exporte que l’entête de ma table (vide).
    donc j'ai pensé à travailler directement sur le dbgrid.
    je travaille sur une base de données Access 2016.
    voilà ! j'espère que c'est clair pour vous

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par youce90 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adoconnection1.Execute('select * into MaFeuille  in "MonClasseur.xls" "excel 12.0;" from MaTable')
    par contre, ce que je veux faire maintenant c'est d'exporter le résultat filtré dynamiquement (filtration au cours de l'exécution)
    j'espère que c'est clair pour vous
    Clair, non car dans tout ce qui a été écrit avant on parle de OLE pas de ADO.

    Pour ce qui est de "Filtrer" avez-vous pensé que SELECT peut contenir une clause WHERE ?
    ici une discussion sur quelque chose qui semble identique.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Clair, non
    Pour ce qui est de "Filter" avez-vous pensé que SELECT peut contenir une clause WHERE ? .
    Oui, je sais très bien que SELECT peut contenir une clause WHERE.
    je vous explique:
    Après avoir afficher les données de la table sur le Dbgrid, j'applique un filtre en saisissant une chaîne de caractères dans un Edit,
    autrement dit, je modifie la propriété "Adoquery1.filter"
    ensuite, pour exporter les données filtrées, voilà ce que j'ai écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adoconnection1.Execute('select * into MaFeuille in "MonClasseur.xls" "excel 12.0;" from MaTable where '+Adoquery1.Filter+'');
    Sans la clause WHERE, la table est entièrement exportée sans problème;
    par contre, quand je rajoute la partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where '+Adoquery1.Filter+''
    ça m'exporte uniquement l’entête de la table

  17. #17
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut jvcl
    Bonjour

    a partir d'une grille il y a le tjvexportexcel de la jvcl qui fait ca très bien.

    Est-ce que le code sql de votre select fonctionne avec l'ide de votre base de données ?

    cordialement

    André

  18. #18
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Un peu hors sujet mais pas tant que ça, c'est peut-être l'occasion de parler du driver Excel pour FireDac proposé par CData et offert pour 1 an par Embarcadero ce mois-ci, non ?
    https://community.idera.com/develope...connectthedata

  19. #19
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par youce90 Voir le message
    ça m'exporte uniquement l’entête de la table
    c'est un gros problème dans votre construction de SQL uniquement ! Avec toutes ces " et ' il y a des mauvaises concaténations dans l'air et une requête qui ne renvoie rien
    Quelques fois il est bon de passer par des étapes intermédiaires pour construire et surtout contrôler un texte SQL
    AMHA le problème se situe à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    adoconnection1.Execute('select * into MaFeuille in "MonClasseur.xls" "excel 12.0;" from MaTable where '+Adoquery1.Filter+'');
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  20. #20
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par alheuredudejeuner Voir le message
    a partir d'une grille il y a le tjvexportexcel de la jvcl qui fait ca très bien.
    André
    Rebonjour, et merci pour toutes vos réponses !
    j'ai fait une petite recherche sur le composant que André m'a proposé, en fait son nom correcte est "TJvgExportExcel" et pour pouvoir l'utiliser il faut installer les bibliothèques jcl et jvcl,
    et en fouillant un peu dans les composants JVCL, j'ai trouvé exactement ce que je cherchais:
    le "TjvDBGridExcelExport", très simple à utiliser, il suffit juste d'indiquer les deux propriétés GRID et FILENAME.
    et l'exportation du contenu du DBGrid se fait correctement,

    Sauf que là, j'ai rencontré une petite anomalie; dans ma table Access j'ai un champ de type "texte court" qui contient des codes fiscaux de 15 chiffres,
    dans le fichier excel exporté, les valeurs de ce champ sont affichés en exponentiel, et aussi quand je double-clique je trouve que les zéros à gauche ont été tronqués
    exemple:
    je trouve "9,9824E+13" au lieu de "099824038210192" sachant que ce champ est de type texte court.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/04/2014, 14h43
  2. Quelle méthode si pas de sous-requête dans FROM clause
    Par ehochedez dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/05/2012, 20h11
  3. Réponses: 0
    Dernier message: 06/05/2009, 13h12
  4. Delphi ne reconnait pas GetTickCount64
    Par xenos dans le forum Langage
    Réponses: 13
    Dernier message: 20/02/2008, 13h56
  5. ma page ne reconnait pas la classe dans le css
    Par Dnx dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 26/08/2005, 00h57

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