Exportation access vers excel

Soyez le premier à donner votre avis sur cette source.

Vue 10 566 fois - Téléchargée 3 738 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
cs_philnext Messages postés 9 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 29 novembre 2010
1 avril 2013 à 20:58
cs_philnext Messages postés 9 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 29 novembre 2010
1 avril 2013 à 12:47
cs_barbichette Messages postés 220 Date d'inscription lundi 30 octobre 2000 Statut Membre Dernière intervention 15 juillet 2013
1 avril 2013 à 10:54
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...
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
28 mars 2013 à 23:04
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.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
28 mars 2013 à 10:25
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.