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 :

Exporter base de donnée vers Excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Par défaut Exporter base de donnée vers Excel
    Bonjour,

    Je dois reprendre un travail réalisé par un précédent stagiaire.
    Dans son exportation d'information, il utilise une fonction que je ne comprends pas vraiment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub OuvrirFichierGenere(ByVal chemin As String, ByRef ExcelInst As Excel.Application, ByRef WB As Excel.Workbook, ByVal RepFichModel As String, ByRef genSheet As Excel.Worksheet) 
    Dim nomFeuil As String 
     
    WB = ExcelInst.Workbooks.Open(RepFichModel) 
    WB.SaveAs(chemin) 
    nomFeuil = WB.Worksheets(1).name 
    genSheet = WB.Worksheets(nomFeuil) 
    ExcelInst.Visible = False 
    End Sub
    Pourriez vous m'aider ?
    Je n'en comprend pas l'utilité. D'autant plus que RepFichModel contient un simple fichier excel avec une feuille nommé "général".

    De plus, je dois modifier le logiciel pour qu'il puisse tourner sur un serveur ne possédant pas Excel. Or, cette même fonction ouvre le fichier excel. J'aurais souhaité savoir si je pouvais faire la même chose sans être obligé de l'ouvrir.

    Merci d'avance pour votre aide.

    Cordialement, Florian.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Cette fonction pilote l'application Excel pour obtenir le résultat voulu.

    Il est donc clair que si Excel n'est pas installé, il n'est pas possible de le piloter...

    Cette technique est aussi reconnu pour sa "stabilité" légendaire (problème d'instance Excel qui ne se ferme pas correctement en autres) et il est fortement déconseillé de l'utiliser sur un serveur.

    S'il s'agit de document Excel 2007 et suppérieur il est possible de travailler directement avec le fichier en mode xml. Pour en savoir plus je te conseille de faire une recherche google (Excel automation server).

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Par défaut
    Merci pour votre réponse possible.

    Mais n'est-il pas possible d'arriver à la même chose sans ouvrir excel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WB = ExcelInst.Workbooks.Open(RepFichModel)
    J'ai modifié la fonction pour qu'elle n'ait plus besoin d'ouvrir le fichier modèle pour récuperer le nom.
    Mais je ne vois vraiment pas comment modifier cette fonction pour obtenir le même résultat, sans avoir à ouvrir excel.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Florian54 Voir le message
    Merci pour votre réponse possible.

    Mais n'est-il pas possible d'arriver à la même chose sans ouvrir excel ?
    On peut parfaitement lire les données d'un classeur Excel sans Excel. (et c'est même conseillé dans le cas d'une application serveur).

    Il suffit de l'attaquer en ADO.Net avec la chaine de connexion (moteur Jet) qui va bien et de lire le classeur comme une base de donnée (et dans ce cas une feuille = une table).

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    ExcelInst = Instance d'un application Excel. Donc si tu n'as pas Excel tu peux effacer toutes les instructions contentant ce terme.

    Bien sur que c'est possible en traitant directement le fichier (faisable avec le .xlsx car il sont en xml, pour les .xls c'est du binaire propriétaire donc bonne chance....)

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par sinople Voir le message
    Bien sur que c'est possible en traitant directement le fichier (faisable avec le .xlsx car il sont en xml, pour les .xls c'est du binaire propriétaire donc bonne chance....)
    Non, encore une fois, on peut attaquer via ADO.Net n'importe quelle version de classeur Excel tout au moins depuis Excel 2003. (pour les versions précédentes je ne sais pas, mais on peut raisonnablement penser que c'est anecdotique).

    Il n'y a aucune raison de s'attaquer au fichier directement, que ce soit du XML ou pas (c'est dans tous les cas une complication inutile).

  7. #7
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Par défaut
    Donc pour faire simple :

    Je ne peux pas créer un .xls depuis une apply VB.NET sans avoir Excel d'installé sur la machine ?

    L'une de mes contraintes dans ce projet est de génerer un fichier .xls, puis de l'envoyer par mail (l'envois par mail n'est pas un soucie).

    Merci encore pour vos réponses pertinentes.

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Florian54 Voir le message
    Donc pour faire simple :

    Je ne peux pas créer un .xls depuis une apply VB.NET sans avoir Excel d'installé sur la machine ?
    Tout à fait. Tu peux toujours chercher à créer un Xlsx, mais bonjour le format Xml à utiliser.

    L'une de mes contraintes dans ce projet est de génerer un fichier .xls, puis de l'envoyer par mail (l'envois par mail n'est pas un soucie).

    Merci encore pour vos réponses pertinentes.
    Le problème est qu'on ne sait pas exactement ton besoin fonctionnel. SI c'est pour faire de l'extraction de données depuis un SGBD et exporter vers un fichier EXcel, c'est peut être possible mais ça dépend du SGBD. Je me demande si SSIS (ETL de SQL Server) n'est pas capable de générer directement un fichier EXcel (à vérifier).

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Utilisation de ADO.NET pour Excel (à savoir que ceci permet d'utiliser Excel en tant que source de donnée, et par conséquent ne donnera pas accès à toute la partie mise en forme du fichier ou utilisation de formule. Ca revient plus à du CSV qu'à de l'Excel au final mais why not?

    http://support.microsoft.com/kb/316934


    Automation Excel sur serveur recommandation de microsoft:

    http://support.microsoft.com/kb/257757

Discussions similaires

  1. [AC-2000] exportation partielle de données vers excel
    Par Lyude dans le forum IHM
    Réponses: 4
    Dernier message: 06/09/2010, 17h33
  2. [AC-2007] exportation base de données vers Sql Server
    Par mouchkar dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 17/05/2010, 13h32
  3. [XSLT][Access] Export Base de données vers XML
    Par la.tete.o.carre dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 17/10/2008, 13h07
  4. exporter des données vers EXCEL!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/11/2005, 15h13
  5. Export de données vers Excel
    Par psykot63 dans le forum Access
    Réponses: 2
    Dernier message: 03/01/2005, 12h04

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