impossible de convertir l'objet COM de type " microsoft.Bureau de.Interop.Excel.ApplicationClass' à 'microsoft.Bureau de.Interop.Excel.L'Application'"
C'est ma première tentative de saisir des données à partir d'excel à partir d'une application console C#.
J'ai l'erreur "impossible de convertir l'objet COM de type" microsoft.Bureau de.Interop.Excel.ApplicationClass' à 'microsoft.Bureau de.Interop.Excel.L'Application".
Ce code utilisé le "Microsoft Excel 12.0 Object Library", et j'ai donné la référence à Microsoft.Bureau de.Interop.Excel.
Encore, je ne pouvais pas obtenir plus de cette erreur, qui je crois a sa propre solution rapide.
J'ai creusé un peu ce site et suis tombé sur cette solution:
Interop type ne peuvent pas être intégrés
Cependant, je ne pouvais pas comprendre donc ne pourrait pas mettre en œuvre ce qui a été suggéré qu'une solution.
Mon .Version Net est de 4,5.
Toute aide est très appréciée.
Merci d'avance.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
namespace deneme
{
class Program
{
static void Main(string[] args)
{
Excel.Application xlApp = new Excel.Application();
xlApp.Visible = true; //<-- excel application
xlApp.DisplayAlerts = false;
//Open the workbook.
Excel.Workbook wBook = xlApp.Workbooks.Open("C:\\FNN\\XLA\\fnnComTemplate.xlsx",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
//get the sheet
Excel.Worksheet wSheet = wBook.Sheets[0];
//foreach (Excel.Worksheet sheet in wBook.Sheets) { if (sheet.Name == "templateSheet") { wSheet = sheet; } }
Excel.Range rng = wSheet.get_Range("A1");
aux = wSheet.Range["F6"].Value;
Console.WriteLine("interop result:" + aux);
Console.ReadLine();
}
}
}
OriginalL'auteur Aykut Saribiyik | 2015-01-21
Vous devez vous connecter pour publier un commentaire.
Si ce n'est pas un code d'erreur lié qu'veuillez supprimer ci-dessous étant donné la clé de registre.
Suit:
Démarrer-- > Exécuter --> regedit --> HKEY_CLASSES_ROOT-->TypeLib-->{00020813-0000-0000-C000-000000000046} --> 1.8/1.7 (Supprimer)
Solution:
Ce problème peut être résolu par la suppression d'une défaillance de la clé de registre à gauche au fil de l'augmentation de la version de Bureau. Suivez les étapes ci-dessus.
Cause:
Ce problème est provoqué par une gauche plus de clé de registre si vous avez rétrogradé à votre version de Microsoft Office à partir d'Office 2010 pour Office 2007 ou Office 2013, Office 2010 ou 2007.
Laissez-moi savoir si cette solution n'est pas permis de vous
Merci Jayesh!!! J'ai supprimé cette base de registre et cela a fonctionné!
a un point. Il serait très utile que certains autres utilisateurs là-bas si vous détailler un peu plus la logique en dessous de votre réponse. Et, encore une fois merci!
J'ai mis à jour ma réponse ci-dessus.
Dans le cas où vous avez Office2016 ne parvient pas à se interop à travailler, vous devez tzo installer Off2013. L', vous devez supprimer ce reg. la clé pour obtenir de l'office de l'interopérabilité de travail. Dans le cas où vous n'avez pas de bureau de l'interopérabilité instal package nuget nuget.org/packages/Microsoft.Office.Interop.Excel
OriginalL'auteur Jayesh Goyani
Microsoft Office 365
J'ai été en cours d'exécution Microsoft Office 365 avec Windows 10 et essayé les solutions mentionnées à supprimer la clé de registre sans succès.
Je suis allé dans le panneau de contrôle dans une tentative de réparation de la suite Office 365.
J'ai choisi la réparation rapide
Essayé de faire de mon programme de nouveau, et tout a fonctionné!
OriginalL'auteur Alex
Je suis sûr que les réponses à cette question (et autres questions) propose de modifier le registre et la suppression des anciennes références à des versions de microsoft Office n'est plus sur la machine sont corrects.
Je ne suis que l'ajout de cette réponse, car je suis actuellement en donnais un coup de pied. Deux heures passées à la chasse des clés dans le registre qui ne menait nulle part. Dernier jet de dés a été d'essayer une simple de réparation sur Microsoft Office et tout à coup, mon erreur a disparu.
... me semble qu'il vaut la peine d'essayer une réparation avant d'entrer trop profondément dans les éditer manuellement le registre.
OriginalL'auteur hawbsl
Une machine avait été mis à jour pour Office 2016 64 bits et l'interface COM était de lever des exceptions lorsqu'il est appelé à partir de la une application 32 bits. Il n'a pas eu ancienne bibliothèque de types d'entrées comme ceux de Jayesh de réponse.
Comparant ProcessMonitor traces d'une machine de travail avec Bureau 2016 a conduit à ce qui ressemble impasse des clés de registre dans
La machine de travail serait de vérifier pour les non-existant clé de registre et retour
La machine défaillante avait la clé de registre mais alors lever une exception, peu de temps après.
Après plusieurs reprises de supprimer la clé de registre, la reprise de la trace, de la suppression de la prochaine faute de clé, l'interface COM fonctionnalité a été restauré.
OriginalL'auteur bds
Avait à la fois de 1,7 et 1,8 dans le registre.
Résolu en supprimant:
OriginalL'auteur Janis S.
Utilisant exactement le même code que j'ai eu le même problème dans un ordinateur portable quand tout a bien fonctionné sur un autre. J'ai essayé diverses solutions trouvées ici et là sur internet, mais ce qui a finalement travaillé, a été la définition explicite de la non-utilisation de la version 32 bits de la bibliothèque. Dans visual studio, j'ai dû cocher puis décocher la case "Préfèrent 32 bits" dans la construction de la section de la configuration du projet, qui a ajouté
<Prefer32Bit>false</Prefer32Bit>
dans le .fichier csproj.OriginalL'auteur Stathis Agrapidis