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 :

creer un fichier Excel c# [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut creer un fichier Excel c#
    Bonjour,

    J'ai ce problème ci lorsque je tente de creer un fichier excel.
    System.InvalidCastException*: 'Impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Excel.ApplicationClass' en type d'interface 'Microsoft.Office.Interop.Excel._Application'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{000208D5-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante*: Erreur lors du chargement de la bibliothèque/DLL du type. (Exception de HRESULT : 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).'

    J'ai beau chercher sur le net je vois que c'est un soucis récurrent.
    Ce que j'ai fait :
    désinstaller office
    Nettoyer la base de registre
    Nettoyer le projet
    redemarrer
    Reinstallation Office.
    Ajouter la DLL dans les reference.. et ca replante ou c'est mon code qui est pourri.

    Excel version 64 bits compilation idem.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    using Excel=Microsoft.Office.Interop.Excel;
    .
    .
    .
     
     
      Excel.Application Exl = new Excel.Application();
     
             var Wb =(Excel.Workbook)Exl.Workbooks.Add(); <--- La Ligne de plantage
                var ws = (Excel.Worksheet)Exl.Worksheets.Add();

    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 964
    Par défaut
    Déjà, il faut placer les parenthèse correctement lorsque tu fait un cast.
    Et ne faire un cast que si c'est nécessaire.

    var Wb =(Excel.Workbook)Exl.Workbooks.Add(); va tenter de convertir ton objet Exl (qui est de type Excel.Application) en Excel.Workbook.
    Ce qui est bien entendu, impossible.
    Et même si cela fonctionnait, Excel.Workbook ne possède pas de méthode Add().

    Donc pour cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Excel.Workbook Wb = Exl.Workbooks.Add();
    Pour le reste, il faut lire la documentation
    https://docs.microsoft.com/fr-fr/dot...nterop-objects
    https://docs.microsoft.com/fr-fr/off...cation(object)
    https://docs.microsoft.com/fr-fr/off...xcel.workbooks
    https://docs.microsoft.com/fr-fr/off...excel.workbook
    https://docs.microsoft.com/fr-fr/off...cel.worksheets
    https://docs.microsoft.com/fr-fr/off...xcel.worksheet

    Edit :
    Sinon, te passer d'Excel et passer par des librairies comme OpenXml ou encore ClosedXml (qui encapsule OpenXML).

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Bonjour Popo,
    Merci de ton aide mais cela ne fonctionne toujours pas la fin de l'erreur me guide vers un soucis avec la interop.excel pourtant bien ajouter dans le projet sinon j'aurai d'autre erreur ailleurs.

    System.InvalidCastException*: 'Impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Excel.ApplicationClass' en type d'interface 'Microsoft.Office.Interop.Excel._Application'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{000208D5-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante*: Erreur lors du chargement de la bibliothèque/DLL du type. (Exception de HRESULT : 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).'


    Je vais essayer ta solution avec la librairie openXMl.

    ce sont des aides trouver en ligne souvent mes bouts de codes, je réinvente pas le fil a coupé le beure mais parfois ca date dans les forums ce n'est plus d'actualités.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 964
    Par défaut
    L'erreur est pourtant claire :
    Erreur lors du chargement de la bibliothèque/DLL du type
    Soit tu n'as pas Excel d'installé ou mal (indispensable pour l'interop), et dans ce cas il vaut mieux te tourner vers OpenXml.
    Soit ta version d'Excel n'est pas compatible avec la version de la librairie d'interop que tu utilises.

    Je vois que tu as décidé de te tourner vers OpenXML.
    Un fichier Excel est vraiment très complexe et tu risques d'être un peu perdu au début.
    Mais c'est selon moi un choix que tu ne regretteras pas.

    Et si vraiment tu trouves cela trop complexe, essaie la librairie ClosedXml.
    Elle encapsule et simplifie l'utilisation de Open XML pour Excel.
    Tu ne pourras faire des choses avancées comme créer une macro à la volée.
    Mais elle est largement suffisante pour couvrir les besoins classiques.

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Bon j'ai essayé avec OpenXml mais c'est plutot Complexe

    J'essaie avec Closed Xml mais la j'ai une erreur bizarre du a openxml

    J'ai désinstallé le nuget openxml enlever la référence enlever tous les using et mes bouts de code pourtant il me demande openxml...

    System.IO.FileNotFoundException*: 'Impossible de charger le fichier ou l'assembly 'DocumentFormat.OpenXml, Version=2.7.2.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17' ou une de ses dépendances. Le fichier spécifié est introuvable.'

    alors que je n'ai plus openxml dans ma Form....


    Trouvé je dois laisser les 2 closed depend de open et les 2 doivent être installés et déclaré dans les ref.

    Par contre j'ai un fichier vide pour le moment

  6. #6
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    J'arrive a construire mon fichier excel de sorti avec ClosedXml.
    J'ai du modifier des paramètres dans Excel soucis d'ouverture de fichier en double clique donc je pense de ce fait interop deconne aussi.

    Merci popo
    Closed xml top datatable direct en table xls c'est cool.
    Je regarde si on peut exporter un graphique egalement.

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

Discussions similaires

  1. aide pour creer un fichier excel avec un pgm cobol
    Par chappai dans le forum Cobol
    Réponses: 4
    Dernier message: 25/08/2011, 10h25
  2. Creer un fichier excel apartir d'une requete dynamique
    Par cyclopsnet dans le forum iReport
    Réponses: 3
    Dernier message: 12/08/2009, 15h58
  3. Creer un fichier excel contenat deux feuilles
    Par miss_java dans le forum C#
    Réponses: 2
    Dernier message: 17/08/2008, 15h19
  4. probleme flexcel creer un fichier excell
    Par oneill701 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2006, 10h22
  5. [C#] Comment créer un fichier Excel ?
    Par dcollart dans le forum ASP.NET
    Réponses: 7
    Dernier message: 02/01/2006, 13h46

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