Ouvrir un fichier excel sans aucune dll office

5/5 (34 avis)

Vue 11 491 fois - Téléchargée 1 158 fois

Description

Comme son nom l'indique, le but de ce programme est de pouvoir regarder dans le ventre des fichiers "Microsoft Office" sans pour autant avoir de dll office sur le poste (donc pas de licence)

La première partie traite de l'encapsulation des fichiers dans un format nommé "Compound File" par MS.
La seconde traite de la mise en forme des données d'excel dans le fichier désencapsulé.

Le projet est contitué d'une DLL contenant toutes les classes nécéssaires
ainsi qu'un projet Exe pour tester.

Source / Exemple :


'à regarder dans le zip

'les doccuments cécéssaires (dont il est fait référence dans le code)
[MS-CFB].pdf
[MS-XLS].pdf

Conclusion :


L'intérêt n'est pas forcement grand si ce n'est de mieux comprendre la lourdeur des fichiers office...

Le but final est surtout de faire un convertisseur automatique Excel->Base de donnée sans nécessité d'avoir de licence Office sur le poste.

Autre intérêt (mais officieux celui-ci) passer de longues heures à se creuser la tête en réinventant la roue pour la Nième fois. ^_^

Fonctionne pas mal ^_^
Le temps de chargement dépends de la taille du fichier !!!
il n'y a pas de bug a ma connaissance

Pas encore terminé (loin de là ^^)

/!\ ne peut charger que les worksheets et non pas les graphs et tout y quanty !!!
c'est déjà assez galère comme cela ^_^

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
26 août 2010 à 09:25
bon ben "gros" update.
Je viens également d'implémenté le "MergeCells" mais je me trouve bien bête a ne pas savoir comment joindre des cellules dans un msHflexgrid.
Si une personne pouvait m'indiquer comment faire. comme cela j'update cette fonction également.
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
24 août 2010 à 13:34
nasserovski merci de ta suggestion. Cependant, même si il est vrai que l'affichage est lent dans une HFlexgrid, son but dans mon code est uniquement de tester la dll. Sa rapidité n'est donc pas importante.
Lorsque je parle de lenteur c'est uniquement celle de la dll qui m'interesse.
Avec le fichier que je donne en exemple, c'est invisible, mais sur un tres gros fichier le chargement est concidérablement plus long. Et encore, je ne charge pas toutes les informations données par le fichier. Telles que les hauteurs de ligne, largeur de colone, type de bordure, couleur de fond, de font et de bordure des cellules. Le font, le format, les formulas ...

amicalement,
nasserovski Messages postés 5 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 avril 2011
24 août 2010 à 11:36
N'oubliez pas le contrôle utilisé recevant les valeurs. Dans notre cas c'est le flex grid. Peut etre que le datagrid de .net est plus rapide. le grid utilisé dans Excel est pratiquement inconnu. Pourquoi ne pas essayer un Spreadsheet du Web Components (OWC).
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 août 2010 à 02:04
Supeeeeeeeeeer ! Continues.

Je ne saurais trop te conseiller d'oublier les optimisations pour le moment. Car c'est un truc a passer des nuits blanches pour pas grand chose. Concentres toi plutôt sur l'essentiel. Une fois ton programme "full featured" tu pourras commencer les optimisations.

Et je te confirme que tu peux faire ça en vb6 et sans multi-thread.

Courage.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
20 août 2010 à 13:22
Je pensais à une fonction VB6 dont l'utilité est seulement pour assurer la compatibilité avec de vieux trucs, mais pas optimisé du tout, mais pour trouver laquelle c'est pas évident : il faut mettre des timers partout (je ne sais pas si on peut profiler le timing pour l'ensemble des fonctions comme en DotNet).

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.