Exportation access vers excel

Soyez le premier à donner votre avis sur cette source.

Vue 9 334 fois - Téléchargée 3 435 fois

Description

Demo : Comment exporter des données d'une table Access vers Excel.

Exemple avec une base de données de gestion de contact.

Source / Exemple :


// Bt : Exporter le contact.
// Procedure exportation des données de la table vers excel.
procedure TFExport.BtExportClick(Sender: TObject);
Const
 Col_A = 'A';
 Col_B = 'B';
var
 StructureList,TableData : TStringList;
 I_Structure,I_TableData,PosCell : Integer;
begin
PosCell := 2;// Position de la cellule.
  // On vérifi que la base de données est bien connecté.
   if Not ADOQuery.Active = True then
     begin
       StatusBar.Panels[3].Text := 'Erreur : Absence de connexion pour l'+#39+'exportation du contact.';
       Exit;
     end;
  // On vérifi que la table n'est pas vide
   if ADOQuery.RecordCount = 0 then
    begin
      StatusBar.Panels[3].Text := 'Aucun contact dans la base de données a exporter.';
      Exit;
    end;
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  StructureList := TStringList.Create; // On créer une liste de structure.
  StructureList.Add('Groupe :');            StructureList.Add('Civilité :');     StructureList.Add('Nom :');              StructureList.Add('Prénom :');
  StructureList.Add('Date de naissance :'); StructureList.Add('Adresse :');      StructureList.Add('Code postal :');      StructureList.Add('Ville :');
  StructureList.Add('Départemment :');      StructureList.Add('Tel Portable :'); StructureList.Add('Tel Fix :');          StructureList.Add('Tel Fax :');
  StructureList.Add('Tel Pro :');           StructureList.Add('Société :');      StructureList.Add('Fonction :');         StructureList.Add('E-Mail :');
  StructureList.Add('Url :');               StructureList.Add('Commentaire :');  StructureList.Add('Date de création :'); StructureList.Add('Date de modification :');
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  TableData := TStringList.Create; // On créer une 2:éme listes pour insérer chaque données de la table dans la structure.
  TableData.Add('Groupe');      TableData.Add('Civ');      TableData.Add('Nom');        TableData.Add('Prenom');
  TableData.Add('Date_N');      TableData.Add('Adresse');  TableData.Add('Code_P');     TableData.Add('Ville');
  TableData.Add('Departement'); TableData.Add('Tel_Port'); TableData.Add('Tel_Fix');    TableData.Add('Tel_Fax');
  TableData.Add('Tel_Pro');     TableData.Add('Societe');  TableData.Add('Fonction');   TableData.Add('E_mail');
  TableData.Add('Url');         TableData.Add('Com');      TableData.Add('Date_Creat'); TableData.Add('Date_Modif');
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  // Création du lien OLE pour la classe référencé par Excel.
  ExcelApp := CreateOleObject('Excel.Application');
  StatusBar.Panels[3].Text := 'Ouverture du logiciel excel.';
  ExcelApp.visible := True; // On rendre Excel visible a l'écran.
  AppPremP; // On mais mais l'application au premier plan.
  Classeur := ExcelApp.Workbooks.Add; // On créer un nouveau document excel.
  Sleep(3000); // On attends 3 secondes.
  StatusBar.Panels[3].Text := 'Construction de la structure.';
  // On commence par construire notre structure.
  repeat // On boucle jusqu'à ce que ont a atteint la fin de la liste (StructureList).
    // On parcourt la liste (StructureList).
    for I_Structure := 0 to StructureList.Count - 1 do
     begin
       // On Sélection une cellule = A2.                                                                                                                  //
       ExcelApp.Range[Col_A + Inttostr(PosCell)].Select;
       // On insert le titre de la structure dans la cellule.
       ExcelApp.Selection.Formula := StructureList.Strings[I_Structure];
       // Appel de procedure (FontCell).
       FontCell(10,'Segoe UI','Bold');
       // On incrément la gauge (+1).
       Gauge.Progress := Gauge.Progress +1;
       Inc(PosCell); // On incrément la Sélection de la cellule (+1).
     end;
  // Fin de la boucle repeat (I_Structure = Fin de la liste).
  until I_Structure = StructureList.Count;
  StructureList.Free; // On libére de la liste (StructureList).
  PosCell := 2;// On remet la variable (PosCell) a sa valeur par défaut (2).
  Sleep(2000); // On attends 3 secondes.
  StatusBar.Panels[3].Text := 'Exportation des données en cour.';
  // On Insert les données de la table dans leur champ.
  repeat // On boucle jusqu'à ce que ont a atteint la fin de la liste (TableData).
     // On parcourt la liste (TableData).
     for I_TableData := 0 to TableData.Count - 1 do
      begin
       // On Sélection une cellule = B2.                                                                                                                  //
       ExcelApp.Range[Col_B + Inttostr(PosCell)].Select;
       // On insert chaque données de la table dans leur cellule.
       ExcelApp.Selection.Formula := ADOQuery.FieldByName(TableData.Strings[I_TableData]).Text;
       // Appel de procedure (FontCell).
       FontCell(10,'Segoe UI','Bold');
       // On incrément la gauge (+1).
       Gauge.Progress := Gauge.Progress +1;
       Inc(PosCell); // On incrément la Sélection de la cellule (+1).
      end;
  // Fin de la boucle repeat (I_TableData = Fin de la liste).
  until I_TableData = TableData.Count;
  TableData.Free; // On libére de la liste (StructureList).
  StatusBar.Panels[3].Text := 'Fin de l'+#39+'exportation du contact.';
end;

Conclusion :


Exporter les informations du contact vers Excel.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
9
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
29 novembre 2010

Messages postés
9
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
29 novembre 2010

Messages postés
220
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013

D'accord aussi avec Mauricio et Cantador (y compris que la généralisation à n'importe quelle table de format quelconque).
De plus, le fichier CSV est compatible avec d'autres tableurs et d'autres appli.
Sinon, il y a maintenant le format XLSX qui est un simple ZIP avec un fichier xml contenant le tableau.
Maintenant, le but ici étant d'exporter ver excel, on suppose que l'utilisateur a excel...
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
merci Mauricio,
OLE, c'est bien sans plus..

il y a la dépendance notamment en cas de changement de version
et aussi et la vitesse d'exécution qui n'est pas terrible.
Alors qu'll existe beaucoup d'autres solutions bien meilleures..
le .cvs en fait partie puisqu'il est reconnu aussitôt par EXCEL et
s'ouvre directement en mode tableur.
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Très bonnes remarques de Cantador!

Je déplore l' utilisation d' Excel (ExcelApp := CreateOleObject('Excel.Application')) qui rend notre application dépendente alors qu' il est possible de créer un fichier *.csv.

a+
Afficher les 8 commentaires

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.