Il existe de nombreuses façons de procéder, que d'autres ont déjà suggérées. En suivant la piste "obtenir des données Excel via SQL", voici quelques conseils.
-
Excel a le "Assistant de connexion de données" qui vous permet d'importer ou de créer des liens à partir d'une autre source de données ou même au sein du même fichier Excel.
-
Deux fournisseurs intéressants font partie de Microsoft Office (et des systèmes d'exploitation) : l'ancien "Microsoft.Jet.OLEDB" et le dernier "Microsoft.ACE.OLEDB". Recherchez-les lorsque vous établissez une connexion (par exemple avec l'assistant de connexion de données).
-
Une fois connectée à un classeur Excel, une feuille de calcul ou une plage est l'équivalent d'un tableau ou d'une vue. Le nom de table d'une feuille de calcul est le nom de la feuille de calcul auquel est ajouté le signe dollar ("$"), entouré de crochets ("[" et "]") ; pour une plage, il s'agit simplement du nom de la plage. Pour spécifier une plage de cellules sans nom comme source d'enregistrement, ajoutez la notation standard Excel ligne/colonne à la fin du nom de la feuille, entre crochets.
-
Le SQL natif sera (plus ou moins) le SQL de Microsoft Access. (Dans le passé, il était appelé JET SQL ; cependant, Access SQL a évolué, et je crois que JET est une vieille technologie dépréciée).
-
Exemple, la lecture d'une feuille de travail : SELECT * FROM [Sheet1$]
-
Exemple, lecture d'une gamme : SELECT * FROM MyRange
-
Exemple, lecture d'une plage de cellules sans nom : SELECT * FROM [Sheet1$A1:B10]
-
Il existe de nombreux livres et sites web qui peuvent vous aider à résoudre ces problèmes.
Autres notes
Par défaut, il est supposé que la première ligne de votre source de données Excel contient des en-têtes de colonne qui peuvent être utilisés comme noms de champ. Si ce n'est pas le cas, vous devez désactiver ce paramètre, ou votre première ligne de données "disparaît" pour être utilisée comme nom de champ. Pour ce faire, ajoutez l'option HDR= setting
dans les propriétés étendues de la chaîne de connexion. La valeur par défaut, qu'il n'est pas nécessaire de préciser, est la suivante HDR=Yes
. Si vous n'avez pas d'en-têtes de colonne, vous devez spécifier HDR=No
; le fournisseur nomme vos champs F1, F2, etc.
Une mise en garde concernant la spécification des feuilles de calcul : Le fournisseur suppose que votre table de données commence par la cellule non vide la plus haute et la plus à gauche de la feuille de calcul spécifiée. En d'autres termes, votre tableau de données peut commencer à la ligne 3, colonne C sans problème. Cependant, vous ne pouvez pas, par exemple, taper un titre de feuille de calcul au-dessus et à gauche des données de la cellule A1.
Une mise en garde concernant la spécification des plages : Lorsque vous spécifiez une feuille de calcul comme source d'enregistrements, le fournisseur ajoute de nouveaux enregistrements sous les enregistrements existants dans la feuille de calcul, selon l'espace disponible. Lorsque vous spécifiez une plage (nommée ou non), Jet ajoute également de nouveaux enregistrements sous les enregistrements existants de la plage, dans la limite de l'espace disponible. Toutefois, si vous effectuez une nouvelle requête sur la plage d'origine, le jeu d'enregistrements résultant n'inclut pas les nouveaux enregistrements ajoutés en dehors de la plage.
Types de données (à essayer) pour CREATE TABLE: Short, Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal
.
Connexion à Excel "old tech" (fichiers avec l'extension xls) : Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;
. Utilisez le type de base de données source Excel 5.0 pour les classeurs Microsoft Excel 5.0 et 7.0 (95) et utilisez le type de base de données source Excel 8.0 pour les classeurs Microsoft Excel 8.0 (97), 9.0 (2000) et 10.0 (2002).
Connexion à la "dernière" version d'Excel (fichiers avec l'extension xlsx) : Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
Traiter les données comme du texte : Le paramètre IMEX traite toutes les données comme du texte. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
(Plus de détails à http://www.connectionstrings.com/excel )
Plus d'informations sur http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx et à http://support.microsoft.com/kb/316934
Connexion à Excel via ADODB par VBA détaillée à l'adresse suivante http://support.microsoft.com/kb/257819
Détails sur le Microsoft JET 4 à l'adresse http://support.microsoft.com/kb/275561