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

 Delphi Discussion :

Liaison Excel-Application delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut Liaison Excel-Application delphi
    Bonjour a Tous
    Je developpe une aplication en delphi7 Entreprise sous windowsXP-SP3. Mon programme reçoit des mesures exterieurs et après conversion les enregistrent dans un classeur Excel qu'il gere entierement. J'utilise les composants serveur (ExcelApplication,ExcelWorkbook,Excelworsheet de dclofficexp 70 et Excel2007). L'utilisateur peut selectionner directement dans excel les differentes feuilles enregistrées pour les visionner et tout continue a fonctionner normalement Mais si il intervient pour ecrire ou corriger une valeur le progr. perd le control et a l'enregistrement suivant il y a declenchement d'une EOleException 'Erreur OLE800A03EC'. En laissant Excel visible je crois qu'il n'y a que deux solutions, Interdire toute operation direct dans Excel ou retrouver la liaison perdu et dans les deux cas je ne vois vraiment pas comment faire.
    Quelqu'un aurait il une idée ou même une solution pour ce probleme ?
    Merci d'avance...

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Pour limiter les actions de l'utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        // Code en LateBinding !
        ExcelOLE := ComObj.CreateOleObject('Excel.Application');
        try
          ExcelOLE.UserControl := True;
          ExcelOLE.WorkBooks.Open(NomDuFichier, IgnoreReadOnlyRecommended := True, Editable := False, Notify := False, ReadOnly := True);
          ...
    Voir la MSDN WorkBooks.Open



    Perso, lorsqu'il y a une ouverture fermeture de windows, je préfère relancer une autre session de Excel, une pour la visualisation, et une autre pour les opérations masquées
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut Autre probleme
    Merci pour ton code et pour la rapidité de la reponse. Mon probleme maintenant est: Comment faire accepter ce code.
    En effet apès avoir ouvert Excel par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     XLApp1.Connect;
     XLApp1.Visible[0]:= True;
    suivant le contexte:
    je crée un nouveau classeur en utilisant les composants ExcelXP (Faq delphi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     WorkBook1.ConnectTo(XlApp1.Workbooks.Add(xlWBATWorksheet,0));
     WorkSheet1.ConnectTo(WorkBook1.Worksheets[1] as _Worksheet);
     (WorkBook1.Worksheets[1] as _WorkSheet).Select(EmptyParam, 0);
     WorkSheet1.Name := 'Mesure-1';
     MonClasseur:= XLApp1.Workbooks[1];
     MaFeuille:=MonClasseur.Worksheets[1] as _worksheet;
    ou bien j'ouvre un classeur existant avec le code suivant (Faq delphi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonClasseur:=XLApp1.Workbooks.Open(CheminFichier+MemFichier,False,False,      EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,     EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0 );
    Chaque fois que j'essaye de rajouter les propriétés le compilateur me jette.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Attention, moi, c'est en LateBinding via OLEVariant sans les pré-déclaration fournie !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut
    Decidemment ça ne fonctionne pas.
    J'ai même fait un petit programme test sans les composants XP mais une fois le classeur crée le compilateur considere les proprietés Editable... comme variables non declarées et quand ça passe j'ai une exception sur OLEVariant.
    Bref je commence a craquer.
    En tout cas merci quand même.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Par défaut EUREKA
    Je pense que j'ai enfin trouvé ma solution car tous les testes que j'ai effectués me conviennent.
    A la creation de l'application la procedure devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Begin
     XLApp1.Connect;
     XLApp1.Visible[0]:= True;
     XLApp1.Interactive[0]:= False; 
    End
    Toutes les operations effectuées par le programme restent active mais l'utilisateur ne peut absolument plus intervenir.
    Encore merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/04/2013, 08h12
  2. importer des données excel dans une application delphi
    Par dino35 dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/02/2011, 16h54
  3. Liaison Excel Delphi via Oleautomation
    Par Blondin77 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 30/04/2008, 13h47
  4. Récupérer la couleur d'une cellule excel par Delphi
    Par teamsebracing dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 05/06/2003, 14h50
  5. Réponses: 1
    Dernier message: 13/05/2002, 09h19

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