OLE2 et Excel [Résolu]

sylvunix 103 Messages postés mardi 11 avril 2006Date d'inscription 4 mars 2009 Dernière intervention - 26 avril 2007 à 16:01 - Dernière réponse : sylvunix 103 Messages postés mardi 11 avril 2006Date d'inscription 4 mars 2009 Dernière intervention
- 27 avril 2007 à 11:03
Bonjour à tous,

J'essaie de charger dans un TOleContainer un feuille Excel lue depuis un fichier, de modifier cette feuille, de la sauvegarder puis de l'imprimer.

J'ai regardé sur DelphiFr et sur d'autres sites tous les sujets pouvant avoir un rapport mais sans vraiment avoir trouvé mon bonheur.

Voici mon état d'avancement :

- Chargement de mon fichier Excel :

  OleContainer: TOleContainer;
  oExcel: OleVariant;

  OleContainer.CreateObject('Excel.Application',false);
  oExcel:=OleContainer.OleObject.Application;
  oExcel.WorkBooks.Open('mon_fichier.xls');

  Mais rien ne s'affiche ... Lorsque je tente d'activer ma feuille, il me dit qu'il ne la trouve pas ...

- Affichage d'une feuille Excel :

  OleContainer: TOleContainer;

  oExcel, oActiveSheet, oCells: OleVariant;


  OleContainer.CreateObject('Excel.Sheet',false);
  OleContainer.DoVerb(ovShow);
  oExcel:=OleContainer.OleObject.Application;
  oActiveSheet:=oExcel.ActiveSheet;
  oCells:=oActiveSheet.Cells;
  for i:=2 to 8 do oCells.Item[2,i].Value:= 'En-tête';

  Là, cela fonctionne. Mais comment charger la feuille depuis un fichier ?

Si quelqu'un pouvait me donner un coup de pouce, ce serait vraiment sympa ...

sylvunix
Afficher la suite 

Votre réponse

4 réponses

sylvunix 103 Messages postés mardi 11 avril 2006Date d'inscription 4 mars 2009 Dernière intervention - 27 avril 2007 à 09:28
+3
Utile
Merci pour ces informations mais mon problème est plus lié à l'utilisation du TOleContainer. Je souhaite en effet afficher ma feuille dans une form et non pas lancer Excel en tant qu'application.

En analysant toute les fonctions, j'ai enfin trouvé une solution :

  OleContainer.CreateObjectFromFile('mon_fichier.xls', false);
  OleContainer.DoVerb(ovInPlaceActivate);    
  oExcel:=OleContainer.OleObject.Application;
  oActiveSheet:=oExcel.ActiveSheet;
  oCells:=oActiveSheet.Cells;
  for i:=2 to 8 do oCells.Item[2,i].Value:= 'En-tête';

Merci encore pour votre aide.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de sylvunix
Oniria 297 Messages postés dimanche 14 mars 2004Date d'inscription 18 décembre 2014 Dernière intervention - 26 avril 2007 à 20:12
0
Utile
Bonjour,

Je te passe un petit bout de code

 var filtre, nom_Excel, nom_Fp,texte1,texte2,num_fp,NOK,Rep_Fp,txt : string;
    i,j,k,l : integer;
    xl,feuille,vWorkSheet : variant; // partie utilisée pour la communication avec EXCEL
    aRange,aLigne : AnsiString;
    vCell : Variant;
    sr : TSearchRec;
    table : array[0..20000] of integer;
    nb_table,ind_fp : integer;
begin
     // Exportation vers Excel
     Form1.SaveDialog1.FileName:=Form1.ComboBox1.Text+'.xls';
     if Form1.SaveDialog1.Execute then // C'est une fenêtre de dialogue pour donner un nom d'export
        begin
             nom_Excel:=Form1.SaveDialog1.FileName;
             // Ouverture Excel
             Xl:=CreateOLEObject('Excel.application'); // Ouverture d'excel
             XL.Visible:=true;                                          // Excel est visible
             feuille:=xl.Workbooks.open(nom_Excel);    // On ouvre le fichier "nom_excel"
             vWorksheet:=feuille.WorkSheets['FPB'];     // On active la page du fichier qui s'appelle FPB

J'espére que ca répond à ton probléme.

Bon courage

Oniria
Commenter la réponse de Oniria
moldov 168 Messages postés mercredi 8 octobre 2003Date d'inscription 10 novembre 2008 Dernière intervention - 26 avril 2007 à 20:43
0
Utile
Salut,

Voici un très bon tutorial pour piloter Excel en Delphi

http://lfe.developpez.com/PasExcel/

Bonne Prog
Commenter la réponse de moldov
sylvunix 103 Messages postés mardi 11 avril 2006Date d'inscription 4 mars 2009 Dernière intervention - 27 avril 2007 à 11:03
0
Utile
Si vous recherchez toutes les commandes OLE disponibles pour Excel, vous les trouverez dans VBAXL10.chm ...
Commenter la réponse de sylvunix

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.