OLE2 et Excel

Résolu
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009 - 26 avril 2007 à 16:01
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009 - 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

4 réponses

sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
27 avril 2007 à 09:28
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.
3
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
26 avril 2007 à 20:12
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
0
moldov Messages postés 165 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 10 novembre 2008
26 avril 2007 à 20:43
Salut,

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

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

Bonne Prog
0
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
27 avril 2007 à 11:03
Si vous recherchez toutes les commandes OLE disponibles pour Excel, vous les trouverez dans VBAXL10.chm ...
0
Rejoignez-nous