IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Export vers Excel - Problème de version d'assembly


Sujet :

VB.NET

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut Export vers Excel - Problème de version d'assembly
    Bonjour à tous,

    après une matinée de recherche sur ce problème, je me décide à poster ici car je n'ai pas trouvé de solution qui fonctionne.

    Pour faire simple, je développe une fonction d'export du contenu d'un datagridview vers un fichier Excel. Je développe sous XP Pro, VB2005, Framework 2.0, et surtout Office 2007 sur ma station...

    J'ai donc inclus dans mon projet la référence COM Microsoft Excel 12.0 Object Library, j'ai mis Copie Locale = True, et j'ai publié mon application par l'assistant de publication de l'EDI (Click At Once ?).

    Bien sur ça fonctionne sans problème sur mon poste, mais un autre PC en XP Pro qui dispose d'Office 2003 (donc Excel 11.0) n'est pas capable de lancer mon application, le message est le suivant :

    Impossible d'installer ou d'exécuter l'application. Cette application requiert l'assembly Microsoft.Vbe.Interop version 12.0.0.0, qui doit d'abord être installée dans le Global Assembly Cache.
    J'ai lu plusieurs choses, il faudrait mettre à disposition l'assembly version 12 dans le framework (mais je ne sais pas faire), ou utiliser l'instruction createObject(Excel.Application) et basculer en liaison tardive (option strict off), ou copier une dll dans le répertoire de déploiement ??? Enfin bref j'ai lu plein de choses, mais rien de très clair...

    Si quelqu'un qui a déjà rencontré le problème pouvais me filer un coup de main, ça serait bien sympa. Idéalement j'aimerais que ma fonction de génération de fichier excel puisse tourner sur des stations utilisant Excel 2000, 2003 voire 2007.

    Merci à vous.

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Dans ce cas, il te faut récupérer les assemblies d'Office 2000, car la compatiblité ascendante est assurée.

    Essaye avec les librairies qui sont disponibles parmi les fichiers à télécharger dans cet article :
    Pilotage de l'application Office Excel (Excel Automation)

  3. #3
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Ah ben je suis passé à coté de cette doc, je vais potasser ça, je pense que la réponse s'y trouve. Merci Skalp.

    Quand je serai arrivé à une solution fonctionnelle, je la posterai.

    Merci

  4. #4
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bon ben je vous fait part de ma progression qui est pas extraordinaire...

    Apparemment il y aurait moyen de se fabriquer sa propre dll (ou assembly) de communication avec Excel, en partant du fichier Excel9.olb (Excel 2000). Ce qui évite d'installer un Office 2000 sur sa machine de développement.

    Ainsi j'ai bien suivi la procédure décrite à cette adresse :
    http://www.devcity.net/Articles/163/1/article.aspx

    pour me fabriquer ma propre dll Excel9.dll.

    Je l'intègre aux références de mon projet, je mets Copie Locale = True, et je déploie.

    Cette fois j'ai l'assembly suivante qui est manquante : stdole version 7.0.3300.0

    Serait-ce une dépendance de l'assembly Excel9 ?

  5. #5
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Finalement c'est bon quand même !

    J'ai donc ajouté la dépendance .net nommée stdole.dll version 7.0.3300.0 qui a son tour nécessitait la dll Microsoft Office 12.0 Object Library.

    Les exports Excel sont donc fonctionnels aussi bien sous Excel 2000 que Excel 2003 et enfin Excel 2007 !

    Pour résumé:
    - je me suis créé ma dll Excel 2000 à partir du fichier Excel9.olb (sur le CD Office 2000)
    - je l'ai ajoutée aux références de mon projet
    - j'ai ajouté la dll stdole qui semble être une dépendance de ma dll Excel
    - enfin j'ai ajouté la dll Office Object Library
    - j'ai mis tout les flag "Copie Locale" à True pour ces 3 assemblys
    - j'ai déployé et ça marche !

    Merci Skalp pour ton aide et ta doc qui m'a aiguillée vers l'astuce qui consiste à se créer son assembly d'excel 2000.

  6. #6
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Bien joué
    N'oublie pas de cliquer sur lorsque ton problème est... résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/07/2015, 13h02
  2. Réponses: 1
    Dernier message: 03/06/2009, 17h14
  3. [AC-2000] Export vers Excel-problème changement d'ordinateur
    Par lolo4014 dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/06/2009, 09h40
  4. Débutant: Problème pour exporter vers excel
    Par jrogron dans le forum Access
    Réponses: 10
    Dernier message: 19/08/2006, 15h42
  5. Réponses: 1
    Dernier message: 01/11/2005, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo