Accès et gestion des feuilles MS Excel avec Delphi

Ce guide étape par étape décrit comment se connecter à Microsoft Excel, récupérer des données de feuille et activer la modification des données à l'aide de DBGrid. Vous trouverez également une liste des erreurs les plus courantes susceptibles d'apparaître au cours du processus, ainsi que la manière de les traiter.

Ce qui est couvert ci-dessous:

  • Méthodes de transfert de données entre Excel et Delphes. Comment se connecter à Excel avec ADO (ActiveX Data Objects) et Delphi.
  • Création d'un éditeur de feuille de calcul Excel à l'aide de Delphi et ADO
  • Récupération des données depuis Excel. Comment référencer une table (ou une plage) dans un classeur Excel.
  • Une discussion sur les types de champs (colonnes) Excel
  • Comment modifier des feuilles Excel: éditez, ajoutez et supprimez des lignes.
  • Transfert de données d'une application Delphi vers Excel. Comment créer une feuille de calcul et la remplir avec des données personnalisées à partir d'une base de données MS Access.

Comment se connecter à Microsoft Excel

instagram viewer

Microsoft Excel est un puissant calculateur de feuille de calcul et un outil d'analyse de données. Étant donné que les lignes et les colonnes d'une feuille de calcul Excel sont étroitement liées aux lignes et aux colonnes d'une table de base de données, de nombreux développeurs jugent approprié de transporter leurs données dans un classeur Excel à des fins d'analyse; et récupérer ensuite les données dans l'application.

L'approche la plus couramment utilisée pour l'échange de données entre votre application et Excel est Automatisation. L'automatisation fournit un moyen de lire des données Excel à l'aide du modèle d'objet Excel pour plonger dans la feuille de calcul, extraire ses données et l'afficher dans un composant de type grille, à savoir DBGrid ou StringGrid.

L'automatisation vous offre la plus grande flexibilité pour localiser les données dans le classeur ainsi que la possibilité de formater la feuille de calcul et de définir divers paramètres au moment de l'exécution.

Pour transférer vos données vers et depuis Excel sans automatisation, vous pouvez utiliser d'autres méthodes telles que:

  • Écrire des données dans un fichier texte délimité par des virgules et laisser Excel analyser le fichier dans des cellules
  • Transférer des données à l'aide de DDE (Dynamic Data Exchange)
  • Transférez vos données vers et depuis une feuille de calcul à l'aide d'ADO

Transfert de données à l'aide d'ADO

Comme Excel est compatible avec JET OLE DB, vous pouvez vous y connecter avec Delphi à l'aide d'ADO (dbGO ou AdoExpress), puis récupérer le les données d'une feuille de calcul dans un ensemble de données ADO en émettant une requête SQL (tout comme vous ouvririez un ensemble de données sur n'importe quelle base de données table).

De cette façon, toutes les méthodes et fonctionnalités de l'objet ADODataset sont disponibles pour traiter les données Excel. En d'autres termes, l'utilisation des composants ADO vous permet de créer une application pouvant utiliser un classeur Excel comme base de données. Un autre fait important est qu'Excel est un processus hors processus Serveur ActiveX. ADO s'exécute en cours de processus et économise les frais généraux liés aux appels hors processus coûteux.

Lorsque vous vous connectez à Excel à l'aide d'ADO, vous pouvez uniquement échanger des données brutes vers et depuis un classeur. Une connexion ADO ne peut pas être utilisée pour le formatage de feuille ou l'implémentation de formules dans des cellules. Cependant, si vous transférez vos données vers une feuille de calcul pré-formatée, le format est conservé. Une fois les données insérées depuis votre application dans Excel, vous pouvez effectuer n'importe quel formatage conditionnel à l'aide d'une macro (préenregistrée) dans la feuille de calcul.

Vous pouvez vous connecter à Excel à l'aide d'ADO avec les deux fournisseurs OLE DB qui font partie de MDAC: fournisseur Microsoft Jet OLE DB ou fournisseur Microsoft OLE DB pour les pilotes ODBC. Nous nous concentrerons sur le fournisseur Jet OLE DB, qui peut être utilisé pour accéder aux données des classeurs Excel via des pilotes ISAM (Indexed Sequential Access Method) installables.

Pointe: Voir le Cours d'initiation à Delphi Programmation de base de données ADO si vous débutez avec ADO.

La magie ConnectionString

La propriété ConnectionString indique à ADO comment se connecter à la source de données. La valeur utilisée pour ConnectionString consiste en un ou plusieurs arguments qu'ADO utilise pour établir la connexion.

Dans Delphi, le composant TADOConnection encapsule l'objet de connexion ADO; il peut être partagé par plusieurs composants de l'ensemble de données ADO (TADOTable, TADOQuery, etc.) via leurs propriétés de connexion.

Pour vous connecter à Excel, une chaîne de connexion valide implique uniquement deux informations supplémentaires - le chemin d'accès complet au classeur et la version du fichier Excel.

Une chaîne de connexion légitime pourrait ressembler à ceci:

ConnectionString: = 'Provider = Microsoft. Jet. OLEDB.4.0; Source de données = C: \ MyWorkBooks \ myDataBook.xls; Propriétés étendues = Excel 8.0; ';

Lors de la connexion à un format de base de données externe pris en charge par Jet, les propriétés étendues de la connexion doivent être définies. Dans notre cas, lors de la connexion à une "base de données Excel", les propriétés étendues sont utilisées pour définir la version du fichier Excel.

Pour un classeur Excel95, cette valeur est "Excel 5.0" (sans les guillemets); utilisez "Excel 8.0" pour Excel 97, Excel 2000, Excel 2002 et ExcelXP.

Important: Vous devez utiliser le fournisseur Jet 4.0 car Jet 3.5 ne prend pas en charge les pilotes ISAM. Si vous définissez Jet Provider sur la version 3.5, vous recevrez l'erreur «Impossible de trouver ISAM installable».

Une autre propriété étendue de Jet est "HDR =". "HDR = Oui" signifie qu'il y a une ligne d'en-tête dans la plage, donc le Jet n'inclura pas la première ligne de la sélection dans le jeu de données. Si "HDR = Non" est spécifié, le fournisseur inclura la première ligne de la plage (ou plage nommée) dans l'ensemble de données.

La première ligne d'une plage est considérée par défaut comme la ligne d'en-tête ("HDR = Oui"). Par conséquent, si vous avez un en-tête de colonne, vous n'avez pas besoin de spécifier cette valeur. Si vous n'avez pas d'en-tête de colonne, vous devez spécifier "HDR = Non".

Maintenant que vous êtes prêt, c'est la partie où les choses deviennent intéressantes puisque nous sommes maintenant prêts pour du code. Voyons comment créer un éditeur de feuille de calcul Excel simple à l'aide de Delphi et ADO.

Remarque: Vous devez continuer même si vous manquez de connaissances sur la programmation ADO et Jet. Comme vous le verrez, la modification d'un classeur Excel est aussi simple que la modification de données à partir de n'importe quelle base de données standard.

instagram story viewer