begin process at 2012 02 11 08:38:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

 > DELPHI - CRÉATION D'UNE FEUILLE DE CALCUL EXCEL (CONTRÔLE TOLECONTAINER)

DELPHI - CRÉATION D'UNE FEUILLE DE CALCUL EXCEL (CONTRÔLE TOLECONTAINER)


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Composants Classé sous :com, olecontainer, activex, excel, sheet Niveau :Débutant Date de création :04/04/2006 Date de mise à jour :16/12/2008 09:29:00 Vu / téléchargé :22 624 / 2 026

Auteur : FENETRES

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Exemple de création d'une feuille de calcul Excel avec le contrôle TOleContainer de l'onglet Système.

Notez que pour le placement des barres d'outils et l'affichage de la barre de formule la propriété d'alignement doit être déclarée à "alClient".

Des variables objets Excel sont définies en nombre suffisant pour construire un tableau de données avec mise en forme et vous initier à une traduction simple du langage VBA en Delphi 7.

Source

  • unit Unit1;
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, OleCtnrs, ExtCtrls;
  • type
  • TForm1 = class(TForm)
  • OleContainer1: TOleContainer;
  • procedure FormCreate(Sender: TObject);
  • procedure FormClose(Sender: TObject; var Action: TCloseAction);
  • private
  • { Déclarations privées }
  • public
  • { Déclarations publiques }
  • end;
  • var
  • Form1: TForm1;
  • Options : array[3..5] of Shortint;
  • oExcel,oCommandBars:OleVariant;
  • implementation
  • {$R *.dfm}
  • procedure TForm1.FormCreate(Sender: TObject);
  • var
  • oActiveWindow, oActiveWorkBook, oSelection, oActiveSheet, oCells, oColumns :OleVariant;
  • i,j :Cardinal;
  • const
  • //Alignement
  • xlCenter=-4108;
  • //Bordures
  • //xlEdgeLeft=7;
  • //xlEdgeTop=8;
  • //xlEdgeBottom=9;
  • //xlEdgeRight=10;
  • //xlInsideVertical=11;
  • //xlInsideHorizontal=12;
  • //Largeur de ligne
  • xlContinuous=1;
  • //xlThin=2;
  • //xlMedium=-4138;
  • //Couleur
  • xlAutomatic=-4105;
  • begin
  • with OleContainer1 do begin
  • Align:=alClient;
  • CreateObject('Excel.Sheet', False);
  • Doverb(ovPrimary);
  • end;
  • //Variables objets
  • oExcel:=OleContainer1.OleObject.Application;
  • oCommandBars:=OleContainer1.oleobject.CommandBars;
  • oActiveWindow:=oExcel.ActiveWindow;
  • oActiveWorkBook:=oExcel.ActiveWorkBook;
  • oActiveSheet:=oExcel.ActiveSheet;
  • oColumns:=oExcel.Columns;
  • oCells:=oActiveSheet.Cells;
  • oSelection:=oExcel.Selection;
  • //Titre
  • Form1.Caption:=oActiveWorkBook.Name;
  • (* A. Options d'affichage *)
  • //Affiche au moins les barres d'outils " Standard " et " Mise en forme "
  • for i:=3 to 4 do begin
  • Options[i]:=oCommandBars.Item[i].Visible;
  • if Options[i]=0 then oCommandBars.Item[i].Visible:=-1;
  • end;
  • //Coche si nécessaire l'option d'affichage de la barre de formule
  • Options[5]:=oExcel.DisplayFormulaBar;
  • if (Options[5]=0) then oExcel.DisplayFormulaBar:=-1;
  • (* B. Tableau de données *)
  • //En-têtes de colonnes
  • for i:=2 to 8 do
  • oCells.Item[2,i].Value:= 'En-tête col. ' + IntToStr(i);
  • //Données
  • for i:=3 to 8 do
  • for j:=2 to 8 do
  • oCells.Item[i,j].Value:=' Cells(' + IntToStr(i) + ', ' + IntToStr(j) + ') ';
  • (* C. Mise en forme *)
  • //Sélection des en-têtes
  • oSelection:=oActiveSheet.Range[oCells.Item[2,2], oCells.Item[2,8]];
  • //Propriétés de la police des en-têtes
  • oSelection.Font.Bold:=1;
  • oSelection.Font.ColorIndex := 9;
  • //Couleur de fond de la sélection
  • oSelection.Interior.ColorIndex := 15;
  • //Centrer les en-têtes
  • oSelection.HorizontalAlignment:= xlCenter;
  • //Bordures
  • for i:=7 to 11 do
  • oSelection.Borders[i].LineStyle:=xlContinuous;
  • //Sélection
  • oActiveSheet.Rows[3].Select;
  • //Figer les volets
  • oActiveWindow.FreezePanes:=1;
  • //Ajustement automatique des colonnes
  • for i:=2 to 8 do
  • oColumns.Item[i].AutoFit;
  • //Largeur de la colonne 1
  • oColumns.Item[1].ColumnWidth:=1.71;
  • //Sélection finale
  • oCells.Item[3, 2].Select;
  • end;
  • procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  • begin
  • if (OleContainer1.State=osUIActive) then begin
  • //Rétablie les options initiales d'affichage
  • oCommandBars.Item[3].Visible:=Options[3];
  • oCommandBars.Item[4].Visible:=Options[4];
  • oExcel.DisplayFormulaBar:=Options[5];
  • //Ferme l'instance
  • oExcel.Quit;
  • end;
  • //Ferme la fiche
  • Action:=caFree;
  • end;
  • end.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtnrs, ExtCtrls;

type
  TForm1 = class(TForm)
    OleContainer1: TOleContainer;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  Options : array[3..5] of Shortint;
  oExcel,oCommandBars:OleVariant;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  oActiveWindow, oActiveWorkBook, oSelection, oActiveSheet, oCells, oColumns :OleVariant;
  i,j :Cardinal;

const
  //Alignement
  xlCenter=-4108;
  //Bordures
  //xlEdgeLeft=7;
  //xlEdgeTop=8;
  //xlEdgeBottom=9;
  //xlEdgeRight=10;
  //xlInsideVertical=11;
  //xlInsideHorizontal=12;
  //Largeur de ligne
  xlContinuous=1;
  //xlThin=2;
  //xlMedium=-4138;
  //Couleur
  xlAutomatic=-4105;

begin
  with OleContainer1 do begin
    Align:=alClient;
    CreateObject('Excel.Sheet', False);
    Doverb(ovPrimary);
  end;

  //Variables objets
  oExcel:=OleContainer1.OleObject.Application;
  oCommandBars:=OleContainer1.oleobject.CommandBars;
  oActiveWindow:=oExcel.ActiveWindow;
  oActiveWorkBook:=oExcel.ActiveWorkBook;
  oActiveSheet:=oExcel.ActiveSheet;
  oColumns:=oExcel.Columns;
  oCells:=oActiveSheet.Cells;
  oSelection:=oExcel.Selection;

  //Titre
  Form1.Caption:=oActiveWorkBook.Name;

  (* A. Options d'affichage *)
  //Affiche au moins les barres d'outils " Standard " et " Mise en forme "
  for i:=3 to 4 do begin
    Options[i]:=oCommandBars.Item[i].Visible;
    if Options[i]=0 then oCommandBars.Item[i].Visible:=-1;
  end;
  //Coche si nécessaire l'option d'affichage de la barre de formule
  Options[5]:=oExcel.DisplayFormulaBar;
  if (Options[5]=0) then oExcel.DisplayFormulaBar:=-1;

  (* B. Tableau de données *)
  //En-têtes de colonnes
  for i:=2 to 8 do
    oCells.Item[2,i].Value:= 'En-tête col. ' + IntToStr(i);
  //Données
  for i:=3 to 8 do
    for j:=2 to 8 do
      oCells.Item[i,j].Value:=' Cells(' + IntToStr(i) + ', ' + IntToStr(j) + ') ';

  (* C. Mise en forme *)
  //Sélection des en-têtes
  oSelection:=oActiveSheet.Range[oCells.Item[2,2], oCells.Item[2,8]];
  //Propriétés de la police des en-têtes
  oSelection.Font.Bold:=1;
  oSelection.Font.ColorIndex := 9;
  //Couleur de fond de la sélection
  oSelection.Interior.ColorIndex := 15;
  //Centrer les en-têtes
  oSelection.HorizontalAlignment:= xlCenter;
  //Bordures
  for i:=7 to 11 do
    oSelection.Borders[i].LineStyle:=xlContinuous;
  //Sélection
  oActiveSheet.Rows[3].Select;
  //Figer les volets
  oActiveWindow.FreezePanes:=1;
  //Ajustement automatique des colonnes
  for i:=2 to 8 do
    oColumns.Item[i].AutoFit;
  //Largeur de la colonne 1
  oColumns.Item[1].ColumnWidth:=1.71;
  //Sélection finale
  oCells.Item[3, 2].Select;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if (OleContainer1.State=osUIActive) then begin
    //Rétablie les options initiales d'affichage
    oCommandBars.Item[3].Visible:=Options[3];
    oCommandBars.Item[4].Visible:=Options[4];
    oExcel.DisplayFormulaBar:=Options[5];
    //Ferme l'instance
    oExcel.Quit;
  end;
  //Ferme la fiche
  Action:=caFree;
end;

end.

 Conclusion

Aide Borland pour utiliser TOleContainer :

1 Placez un composant TOleContainer dans votre fiche.

2 Initialisez la propriété AllowActiveDoc à true si vous voulez pouvoir accueillir un document actif.

2 Initialisez la propriété AllowInPlace pour indiquer si l'objet accueilli doit apparaître dans le TOleContainer ou dans une fenêtre séparée.

4 Ecrivez des gestionnaires d'événements pour répondre quand l'objet est activé, désactivé, déplacé ou redimensionné.

5 Pour lier l'objet TOleContainer à la conception, cliquez avec le bouton droit de la souris et choisissez Insérer un objet. Dans la boîte de dialogue Insertion d'objet, choisissez l'objet serveur à accueillir.

6 Vous avez plusieurs moyens de lier l'objet TOleContainer à l'exécution, selon la manière dont vous voulez identifier l'objet serveur. La méthode CreateObject attend un identificateur de programme, CreateObjectFromFile attend le nom d'un fichier dans lequel l'objet a été enregistré, CreateObjectFromInfo attend un record contenant des informations sur la manière de créer l'objet ou CreateLinkToFile qui attend le nom d'un fichier dans lequel l'objet a été enregistré et effectue une liaison et non une incorporation.

7 Une fois l'objet lié, vous pouvez accéder à son interface en utilisant la propriété OleObjectInterface. Cependant, comme la communication avec les objets Ole2 était basée sur les verbes OLE, vous préférerez probablement envoyer des commandes au serveur en utilisant la méthode DoVerb.

8 Quand vous voulez libérer l'objet serveur, appelez la méthode DestroyObject

Un exemple d'application MDI est fourni par Borland à l'emplacement "\\Borland\Demos\ActiveX\OleCtnrs".

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   OleContainer

Télécharger le zip


 Historique

06 avril 2006 14:42:26 :
Ajout des options d'affichage
06 avril 2006 15:51:38 :
Index erronée sue l'événement "OnDestroy"
06 avril 2006 17:45:31 :
Ajout code source capture d'écran (affichage d'une feuille sans barre d'outils ni barre de formule)
06 avril 2006 18:00:58 :
Erreur de manip
07 avril 2006 15:29:49 :
Fermeture de l'instance Excel : condition sur le statut de l'objet OleContainer
07 avril 2006 15:55:41 :
Correction faute d'orthographe
10 avril 2006 10:39:26 :
Propriété d'alignement, capture d'écran
10 avril 2006 11:06:06 :
Capture d'écran
03 décembre 2008 17:04:54 :
Zip (sup. des fichiers inutiles)
03 décembre 2008 17:08:06 :
Err. manip
16 décembre 2008 09:29:01 :
Description (faute de frappe)

 Sources du même auteur

Source avec Zip Source avec une capture DELPHI : SHA-1 EN MODE CHIFFREMENT (SHACAL)
Source avec Zip Source avec une capture DELPHI - AJOUT DE POLICES (APP. CONSOLE)
Source avec Zip Source avec une capture DELPHI - CREATION D'UNE COLLECTION D'ENREGISTREMENTS SAGE (T...
Source avec Zip Source avec une capture DELPHI - CHEMIN D'ACCÈS DE STYLE ELLIPTIQUE (GET PATH ELLIPS...
Source avec Zip Source avec une capture DELPHI : PROCEDURE SPLIT SIMILAIRE A LA FONCTION EPONYME EN ...

 Sources de la même categorie

Source avec Zip MOVCONTROL par abmed1963
Source avec Zip Source avec une capture PACKAGE DE COMPOSANTS CINDY V4.41 par MAURICIO
Source avec Zip Source avec une capture DBNAVIGATORPLUS par pascal1541
Source avec Zip Source avec une capture EVALUATION D' EXPRESSIONS MATHÉMATIQUE (MÉTHODE RPN) par MAURICIO
Source avec Zip Source avec une capture COMPOSANT TQPROGRESSBAR UNE BARRE DE PROGRESSION... par yanb

 Sources en rapport avec celle ci

Source avec Zip APPLICATION ALIAS+EXCEL par walidlam
Source avec Zip EXPORTE TABLE VER EXCEL par apcmorsott
Source avec Zip Source avec une capture LISTER LES FILMS D'UN DOSSIER ET LES INSERER DANS UN FICHIER... par Groutch
Source avec Zip TGPS COMPOSANT DE GESTION DES TRAMES NMEA 0185 par ILP
PILOTER EXCEL (ZONE D'IMPRESSION, PASSWORD, AJOUT DE FEUILLE... par tomazeli

Commentaires et avis

Commentaire de amira1979 le 17/04/2006 09:14:47

comment à partir de delphi dont j'ai des lignes (ds un dbgrid) aprés l'enregistrement ds la base de données j'affiche ces lignes sur une feuille excel aidez mois svp
merci

Commentaire de asciidefond le 18/04/2006 02:19:49

Salut amira1979,

Le plus simple est de créer un fichier *.cvs

Ex.vu sur DelphiFr.com (je ne me souviens plus du pseudo de l'auteur dsl pour lui)


//Enregistrement d'une Table access dans un fichier CVS
procedure TForm1.SaveToCSV(const Name: TFileName; const Delim: string);
var
  f: Textfile;
  s: string;
  i: Integer;
begin
  AssignFile(f, Name);
  FileMode := fmOpenWrite;
  Rewrite(f);
  ADOQuery1.First;

  s := '';
  for i := 0 to ADOQuery1.FieldCount-1 do
  begin
    if s <> '' then
      s := s + Delim;
      s := s + ADOQuery1.Fields[i].FieldName;
  end;
  WriteLn(f, s);
  while not ADOQuery1.Eof do
  begin
    s := '';
    for i := 0 to ADOQuery1.FieldCount-1 do
    begin
      if s <> '' then
        s := s + Delim;
      s := s + StringReplace(ADOQuery1.Fields[i].AsString, sLineBreak, '|', [rfReplaceAll]);
    end;
    WriteLn(f, s);
    ADOQuery1.Next;
  end;
  CloseFile(f);
end;

@+

Commentaire de FENETRES le 18/04/2006 10:13:51

Ce passage par un fichier texte n'est pas nécessaire. Le conseil est péremptoire et inexact. Cette solution d'un CSV n'est pas la plus simple.
Il suffit de passer (méthode de classe), par exemple, l'objet DbGrid au composant Excel. Il existe de nombreux exemples en ligne.

Commentaire de amira1979 le 19/04/2006 08:30:58

bonjour
est ce ke vous pouvez m'aider un peu plus ou je peux trouvez les exemples.
merci

Commentaire de FENETRES le 19/04/2006 10:02:35


Si cela peut vous aider voici quelques exemples différents récupérés sur Internet. Désolé pour l'auteur, j'ai oublié de noter son nom.

{**************************************************************}
uses
  ComObj;

function RefToCell(ARow, ACol: Integer): string;
begin
  Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
end;

function SaveAsExcelFile(AGrid: TStringGrid; ASheetName, AFileName: string): Boolean;
const
  xlWBATWorksheet = -4167;
var
  Row, Col: Integer;
  GridPrevFile: string;
  XLApp, Sheet, Data: OLEVariant;
  i, j: Integer;
begin
  // Prepare Data
  Data := VarArrayCreate([1, AGrid.RowCount, 1, AGrid.ColCount], varVariant);
  for i := 0 to AGrid.ColCount - 1 do
    for j := 0 to AGrid.RowCount - 1 do
      Data[j + 1, i + 1] := AGrid.Cells[i, j];
  // Create Excel-OLE Object
  Result := False;
  XLApp := CreateOleObject('Excel.Application');
  try
    // Hide Excel
    XLApp.Visible := False;
    // Add new Workbook
    XLApp.Workbooks.Add(xlWBatWorkSheet);
    Sheet := XLApp.Workbooks[1].WorkSheets[1];
    Sheet.Name := ASheetName;
    // Fill up the sheet
    Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount,
      AGrid.ColCount)].Value := Data;
    // Save Excel Worksheet
    try
      XLApp.Workbooks[1].SaveAs(AFileName);
      Result := True;
    except
      // Error ?
    end;
  finally
    // Quit Excel
    if not VarIsEmpty(XLApp) then
    begin
      XLApp.DisplayAlerts := False;
      XLApp.Quit;
      XLAPP := Unassigned;
      Sheet := Unassigned;
    end;
  end;
end;

// Example:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if SaveAsExcelFile(stringGrid1, 'My Stringgrid Data', 'c:\MyExcelFile.xls') then
    ShowMessage('StringGrid saved!');
end;


{**************************************************************}
{2. Without OLE }

procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
  const AValue: string);
var
  L: Word;
const
  {$J+}
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
  {$J-}
begin
  L := Length(AValue);
  CXlsLabel[1] := 8 + L;
  CXlsLabel[2] := ARow;
  CXlsLabel[3] := ACol;
  CXlsLabel[5] := L;
  XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
  XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;


function SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean;
const
  {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
  CXlsEof: array[0..1] of Word = ($0A, 00);
var
  FStream: TFileStream;
  I, J: Integer;
begin
  Result := False;
  FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
  try
    CXlsBof[4] := 0;
    FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
    for i := 0 to AGrid.ColCount - 1 do
      for j := 0 to AGrid.RowCount - 1 do
        XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]);
    FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
    Result := True;
  finally
    FStream.Free;
  end;
end;

// Example:

procedure TForm1.Button2Click(Sender: TObject);
begin
  if SaveAsExcelFile(StringGrid1, 'c:\MyExcelFile.xls') then
    ShowMessage('StringGrid saved!');
end;

{**************************************************************}
{3. Code by Reinhard Schatzl }

uses
  ComObj;

// Hilfsfunktion für StringGridToExcelSheet
// Helper function for StringGridToExcelSheet
function RefToCell(RowID, ColID: Integer): string;
var
  ACount, APos: Integer;
begin
  ACount := ColID div 26;
  APos := ColID mod 26;
  if APos = 0 then
  begin
    ACount := ACount - 1;
    APos := 26;
  end;

  if ACount = 0 then
    Result := Chr(Ord('A') + ColID - 1) + IntToStr(RowID);

  if ACount = 1 then
    Result := 'A' + Chr(Ord('A') + APos - 1) + IntToStr(RowID);

  if ACount > 1 then
    Result := Chr(Ord('A') + ACount - 1) + Chr(Ord('A') + APos - 1) + IntToStr(RowID);
end;

// StringGrid Inhalt in Excel exportieren
// Export StringGrid contents to Excel
function StringGridToExcelSheet(Grid: TStringGrid; SheetName, FileName: string;
  ShowExcel: Boolean): Boolean;
const
  xlWBATWorksheet = -4167;
var
  SheetCount, SheetColCount, SheetRowCount, BookCount: Integer;
  XLApp, Sheet, Data: OLEVariant;
  I, J, N, M: Integer;
  SaveFileName: string;
begin
  //notwendige Sheetanzahl feststellen
  SheetCount := (Grid.ColCount div 256) + 1;
  if Grid.ColCount mod 256 = 0 then
    SheetCount := SheetCount - 1;
  //notwendige Bookanzahl feststellen
  BookCount := (Grid.RowCount div 65536) + 1;
  if Grid.RowCount mod 65536 = 0 then
    BookCount := BookCount - 1;

  //Create Excel-OLE Object
  Result := False;
  XLApp  := CreateOleObject('Excel.Application');
  try
    //Excelsheet anzeigen
    if ShowExcel = False then
      XLApp.Visible := False
    else
      XLApp.Visible := True;
    //Workbook hinzufügen
    for M := 1 to BookCount do
    begin
      XLApp.Workbooks.Add(xlWBATWorksheet);
      //Sheets anlegen
      for N := 1 to SheetCount - 1 do
      begin
        XLApp.Worksheets.Add;
      end;
    end;
    //Sheet ColAnzahl feststellen
    if Grid.ColCount <= 256 then
      SheetColCount := Grid.ColCount
    else
      SheetColCount := 256;
    //Sheet RowAnzahl feststellen
    if Grid.RowCount <= 65536 then
      SheetRowCount := Grid.RowCount
    else
      SheetRowCount := 65536;

    //Sheets befüllen
    for M := 1 to BookCount do
    begin
      for N := 1 to SheetCount do
      begin
        //Daten aus Grid holen
        Data := VarArrayCreate([1, Grid.RowCount, 1, SheetColCount], varVariant);
        for I := 0 to SheetColCount - 1 do
          for J := 0 to SheetRowCount - 1 do
            if ((I + 256 * (N - 1)) <= Grid.ColCount) and
              ((J + 65536 * (M - 1)) <= Grid.RowCount) then
              Data[J + 1, I + 1] := Grid.Cells[I + 256 * (N - 1), J + 65536 * (M - 1)];
        //-------------------------
        XLApp.Worksheets[N].Select;
        XLApp.Workbooks[M].Worksheets[N].Name := SheetName + IntToStr(N);
        //Zellen als String Formatieren
        XLApp.Workbooks[M].Worksheets[N].Range[RefToCell(1, 1),
          RefToCell(SheetRowCount, SheetColCount)].Select;
        XLApp.Selection.NumberFormat := '@';
        XLApp.Workbooks[M].Worksheets[N].Range['A1'].Select;
        //Daten dem Excelsheet übergeben
        Sheet := XLApp.Workbooks[M].WorkSheets[N];
        Sheet.Range[RefToCell(1, 1), RefToCell(SheetRowCount, SheetColCount)].Value :=
          Data;
      end;
    end;
    //Save Excel Worksheet
    try
      for M := 1 to BookCount do
      begin
        SaveFileName := Copy(FileName, 1,Pos('.', FileName) - 1) + IntToStr(M) +
          Copy(FileName, Pos('.', FileName),
          Length(FileName) - Pos('.', FileName) + 1);
        XLApp.Workbooks[M].SaveAs(SaveFileName);
      end;
      Result := True;
    except
      // Error ?
    end;
  finally
    //Excel Beenden
    if (not VarIsEmpty(XLApp)) and (ShowExcel = False) then
    begin
      XLApp.DisplayAlerts := False;
      XLApp.Quit;
      XLAPP := Unassigned;
      Sheet := Unassigned;
    end;
  end;
end;

//Example
procedure TForm1.Button1Click(Sender: TObject);
begin
  //StringGrid inhalt in Excel exportieren
  //Grid : stringGrid, SheetName : stringgrid Print, Pfad : c:\Test\ExcelFile.xls, Excelsheet anzeigen
  StringGridToExcelSheet(StringGrid, 'Stringgrid Print', 'c:\Test\ExcelFile.xls', True);
end;
{**************************************************************}

Bon courage

Commentaire de amira1979 le 19/04/2006 10:24:16

EST CE QUE C POSSIBLE D'AVOIR L'EXEMPLE REELEMENT
MERCI DE VOTRE AIDE

Commentaire de FENETRES le 20/04/2006 11:13:22

Pas avant lundi, je suis débordé.

Commentaire de FENETRES le 15/06/2006 15:39:59

La méthode SAveAsDocument de l'objet OleContainer permet d'enregistrer la feuille Excel (cf. instruction ci-dessous).

OleContainer1.SaveAsDocument('C:\MonFichier.xls');

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

OLECONTAINER avec EXCEL [ par yvessimon ] Bonjour,Avec OLeConainer l'incrustation de EXCEL dans la fiche se fait sans difficultée.Par contre le menu par défaut ne permet pas de sauvegarder dir Composant OleContainer pilotage avec delphi [ par yvessimon ] Bonjour,Avec le composant " OleContainer "&nbsp; il est possible d'utiliser diff&#233;rentes applications et en autre excel. La question est de savoir OleContainer [ par dugueclin ] Bonjour &#224; tous,J'ai delphi 7 &#233;dition perso, j'aimerai bien savoir si je peux utiliser le composant OleContainer pour piloter Excel.J'aime bi OLE2 et Excel [ par sylvunix ] 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 Ecriture fichier Excel multi sheet sans OLE [ par Ptinico ] Salut,Qq'un a-t-il une idée comment on peut créer un fichier natif Excel avec plusieurs sheet depuis Delphi (bien sûr sans passer par OLE ou DDE, càd activeX+f1book(VCF) [ par mezaouri ] Bonsoir tt le monde;apres avoir cree un workbook excel avec des procedures de calcul tel que Hlookup et Vlookup et cree ensuite une application delphi importer une ActiveX sous D2005????? [ par jlen100 ] salut, question stupide s'il en est: comment importer une ActiveX&nbsp; sous D2005 sous D7 c'&#233;tait super simple il suffisait de faire composant i EXCEL [ par hassaine ] Bonjour, j'ai une table sous forme d'excel (IRG.XLS) je voudrais bien reprendre cette table en (IRG.DB "paradox") a fin d'éviter de reprendre toute la Bouger un JPG dans Excel [ par dominique.stock ] Bonjour,J'ai un souci avec Excel, j'incorpore des photos dans un fichier Excel.Je souhaiterais mettre plusieurs photos dans une même cellule.Mon souvi Excel et delphi [ par TouTSpeed ] Bonjourje sais définir le type de courbes sous excel grâce a ceci,XLApp.ActiveChart.ChartType:= xlColumnClustered;mais le souci et que cela affecte to


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,011 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales