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

C# Discussion :

FileInfo et Excel


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut FileInfo et Excel
    Bonjour,

    J'ai un beau site en ASP.NET qui tourne sur un serveur distant et sur lequel on a une page d'upload/download fichier.
    Dans le cas d'upload de fichiers excel, j'ai besoin de lire les commentaires inscrits dans le fichier excel (dans les propriétés même du fichier, avec l'auteur et le titre notamment).

    Sauf que petit problème, impossible d'exécuter la ligne "new Excel.application"
    Ca marche très bien en local bien évidemment....
    Je suppose que c'est un problème de droits mais impossible d'en venir à bout.

    Pour esquiver le problème, j'ai essayé d'utiliser la classe FileInfo (sans ouvir le fichier excel du coup), mais celle ci donne le nom du fichier, les dates de dernière sauvegarde, ... mais pas les commentaires !

    Quelqu'un a une idée pour ces 2 problèmes ?

    Merci !

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Si je me souviens bien un post dans le même jour a déjà etait traité il y a quelque semaine.
    Il serait bien d'utiliser la fonction recherche avant de poluer le forum avec un post inutile.

    Bref la solution devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileVersionInfo.GetVersionInfo("NonDuFichier").Comments;
    Ha oui au fait je ne connaissais pas la réponse avant que tu n'ouvres ce sujet. Grâce à l'intelliscence (ou la doc c# si tu n'as pas l'intelliscence) j'ai regardé tous les objets disponible dont le nom commençais par File et j'ai lu les commentaires décrivant ces objets. C'est comme cela que je suis tombé sur FileVersionInfo. Je pense que cette démarche est à la porté de tout le monde, après tout cela revient à chercher dans un faq, ou une doc non ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    ok je m'excuse pour avoir pas super bien expliqué mon truc.

    En fait fileVersionInfo j'ai déjà testé aussi mais ça permet d'obtenir des infos pour les exécutables, pas pour les documents comme des feuilles excel....

    du coup malheureusement le champ comments dont il est question ici ne permet pas d'accéder à celui présent dans l'onglet "Résumé" quand on fait le clic droit sur le fichier...

    Désolé pour ce petit oubli !

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    ???
    L'onglet résumé est le même que ce soit un fichier exécutable ou pas. Et FileVersionInfo n'est pas spécifié limité au seul exécutable.
    Si cela ne marche pas c'est qu'il doit y avoir un problème sur ton code.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Points : 444
    Points
    444
    Par défaut
    Il te faut d'abord autoriser l'utilisateur ASPNET à executer Excel (clique droit sur l'exe, onglet sécurité)
    Ensuite, il faut préciser à IIS que le lancement d'Excel depuis l'exterieur est personnaliser (sinon tu risque de rencontrer une erreur de type 8004007 je crois sans être sûr) Répète les étapes de ce lien :

    configuer les composants COM+

    Dernière chose, si tu travail avec la version Sp2 de XP, alors les Automation peuvent être défectueuse car les composants Com ne sont pas compatible avec la version sp2 (Merci Microsoft). Pour corriger cet erreur, tu peux doit faire certaine modif au niveau de la base de registre, mais je te laisse les découvrir en visitant ce lien :
    Modifier la base de registre

    Je l'ai fait y'a quelque jour et ça marche très bien.

    Je pense à une dernière chose, si tu lance une instance d'Excel avec Excel.Application, alors la commende application.Quit() ne tue pas tous les processus Excel lancé, il en reste toujours un, tu pourra faire la vérification dans le gestionnaire des tâches. Microsoft à effectivement constaté ce bug. En cherchant sur le net, j'ai trouvé ce lien Fermer l'instance d'Excel, mais ça ne marche pas... Si tu trouve une solution, fait moi signe...

    Bonne chance.

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Voici la discussion que j'ai mentionne :
    http://www.developpez.net/forums/sho...ileVersionInfo

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    merci pour toutes les infos oyigit mais malheureusement ça ne fonctionne toujours pas...
    Message d'erreur : La récupération de la fabrique de classe COM pour le composant avec le CLSID {00024500-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80070005.
    Sur cette ligne : XlApp = new Excel.Application();


    j'ai ajouté tous les droits nécessaires à l'utilisateur ASP.NET du serveur web, mais sans résutlat.
    Chose étrange, le message d'erreur du site donne la clé 00024500-0000-0000-C000-000000000046 pour l'application Excel, tandis que dans le journal des évènements des services de composants, l'appli excel correspond à 00020812-0000-0000-C000-000000000046

    Utilisant windows server 2003 SP1, je ne sais pas s'il est nécessaire de nettoyer la base de registres...

    Je vais me pencher sur ta solution ced600.

    Merci à vous 2

  8. #8
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Points : 444
    Points
    444
    Par défaut
    J'avais exactement l'erreur 8007005. Une fois la base de registre nettoyé, chez moi ça à marché.

    Evidemment dans ton cas, tu n'as pas forcément besoin de lancer Excel par Automation... Donc il serait peut être plus judicieux d'utiliser les objets du namespace System.IO

  9. #9
    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
    Citation Envoyé par oyigit Voir le message
    Je pense à une dernière chose, si tu lance une instance d'Excel avec Excel.Application, alors la commende application.Quit() ne tue pas tous les processus Excel lancé, il en reste toujours un, tu pourra faire la vérification dans le gestionnaire des tâches. Microsoft à effectivement constaté ce bug. En cherchant sur le net, j'ai trouvé ce lien Fermer l'instance d'Excel, mais ça ne marche pas... Si tu trouve une solution, fait moi signe...
    Il existe une solution, qui vaut ce qu'elle vaut, mais qui a le mérite d'être efficace : regarde les méthodes Open() et Close() de cet article :
    http://skalp.developpez.com/tutoriel...nexcel/#LIII-D

  10. #10
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Points : 444
    Points
    444
    Par défaut
    Merci Skalp pour l'info, je vais tester

Discussions similaires

  1. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52
  2. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  3. [Kylix] kylix et excel
    Par gothe dans le forum EDI
    Réponses: 1
    Dernier message: 19/09/2002, 19h44
  4. Réponses: 2
    Dernier message: 22/07/2002, 12h13
  5. [Kylix] Excel via kylix
    Par Billy joel dans le forum EDI
    Réponses: 1
    Dernier message: 23/05/2002, 11h57

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