CodeS-SourceS
Rechercher un code, un tuto, une réponse

Vbexcellibrary : lire rapidement un classeur excel sans excel ni odbc

Soyez le premier à donner votre avis sur cette source.

Vue 7 386 fois - Téléchargée 511 fois

Description

VBExcelLibrary est la traduction en VB.Net de la source ExcelLibrary.WinForm :
Excel Reader By Liu Junfeng (20/02/2009)
Create, read and modify Excel *.xls files in pure C# without COM interop
www.codeproject.com/KB/office/ExcelReader.aspx

La dernière source est ici :
http://code.google.com/p/excellibrary/

Source / Exemple :


cf. zip.

Conclusion :


Seule la première version de 2009 peut être téléchargée directement via le web. Pour avoir la dernière version, il faut obligatoirement installer un logiciel client Subversion svn (ne pas tomber dans une trop grande facilité donc !). Le client Subversion qui va bien pour Windows 32 bits est ici :
http://sourceforge.net/projects/win32svn/ : Récupérez et installez le fichier Setup-Subversion-1.6.16.msi
Ensuite créez un dossier local sur votre disque dur et tapez (dans un fichier batch par exemple) :
svn checkout http://excellibrary.googlecode.com/svn/trunk/ excellibrary-read-only
Vous pouvez alors compiler le projet en C# 2008 Express (le cas échéant compiler directement \src\ExcelLibrary\ExcelLibrary.csproj, car le .sln global est en Visual Studio 2010).

J'ai essayé aussi de traduire (toujours via Reflector) la source de la dll en C# (la librairie elle-même) mais comme il y a de nombreux fichiers, cela représente beaucoup de boulot, pour peu d'intérêt, car il suffit d'inclure la dll dans un projet DotNet. Le seul intérêt qu'il y aurait serait de pouvoir déboguer complètement en VB Express, alors que là il faut la version professionnel de Visual Studio pour pouvoir déboguer en VB et C# à la fois (on peut cependant utiliser C# express pour deboguer via le projet d'origine).

L'application affiche les feuilles Excel dans des DataGridView, et aussi dans un TreeView, mais dans ce dernier cas on ne comprend pas bien toutes les informations affichées et leur possible intérêt.
On peut aussi écrire un fichier Excel (cela fonctionne bien, mais reste à voir si la programmation est semblable à VBA, pour le possible remplacement du code existant).
On peut aussi lire les attributs, par exemple les couleurs (ou en tous cas certaines couleurs, je n'ai pas vu pour le moment si on pouvait récupérer le format des cellules Excel)
Si le classeur contient un mot de passe, le mot de passe est ignoré :-)

J'ai mis à jour ma source XL2Csv pour pouvoir produire rapidement des fichiers csv, qui ne sont plus limités par la lecture ODBC cette fois : colonnes multi-types de données, données éparpillées, ... en se rapprochant le plus possible de la méthode Enregistrer sous csv d'Excel (sauf le format de présentation, les lignes et colonnes ignorées en début de feuille, et les ; enlevés à la fin des lignes). Pour le moment, les tests que j'ai fait montrent que les deux méthodes (la méthode classique et lente en automation Excel, et cette méthode rapide présentée ici) produisent bien des fichiers csv identiques. Exception : les dates ne sont pas reconnues (elles restent encodées), alors qu'elles sont bien affichée via automation (le format de présentation est ignoré pour les 2 méthodes).

Les classeurs Excel 2007 et 2010 ne sont pas reconnus, je n'ai que des liens ODBC pour le moment :

Voir ici pour la lecture des fichiers Excel 2007 via ODBC :
http://blogs.developpeur.org/coq/archive/2007/09/21/classeurs-excel-via-oledb-et-pour-les-versions-2007-xlsb-xlsm-xlsx.aspx

2007 Office System Driver: Data Connectivity Components : AccessDatabaseEngine.exe
Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties="Excel 12.0;HDR=YES;IMEX=1";
www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

Et en 64 bits :
http://blogs.codes-sources.com/coq/archive/2007/11/25/microsoft-ace-oledb-12-0-en-64-bit.aspx

Codes Sources

A voir également

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.