Objet Excel sur C# [Résolu]

Signaler
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
Bonjour,

J'ai un code en C#  que lit les cellules Excel. J'ai un objet Worksheet qui accède à la feuille Excel. Quand je compile, sur cette ligne:

"test = (

string) m_Worksheet.Cells.get_Item(i, j);"

il me donne l'erreur:
Impossible d'effectuer un cast d'un objet COM de type 'System.__ComObject' en type de classe 'System.String'. Les instances de types qui représentent des composants COM ne peuvent pas être castées en types différents représentant des composants COM ; toutefois, elles peuvent être castées

test est une variable du type string. Bref, je n'arrive pas à affecter à une variable string le contenu du objet. J'essaie de faire la conversion, mais ça ne marche pas.  Quelqu'un peut m'aider SVP?

Merci,
O. Reis

11 réponses

Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Normal, tu as oublié les paranthèse, comme le message d'erreur te l'indique, tu souhaite appeler la méthode.

xxx.ToString -> Objet représentant la méthode "ToString".
xxx.ToString() -> Appel de la fonction ToString, renvoie sa valeur.

Julien.
Messages postés
29
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
24 octobre 2007
1
Bonjour,

Jamais vu la metode get_Item... mais bref admettons.
get_Item(i, j).ToString() renverait un string.

NeuroCypher
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

Merci de ton mail...

le get_Item(i, j).ToString()  n'a pas marché. J'ai le message d'erreur suivant:

Erreur 1 Impossible de convertir le groupe de méthodes 'ToString' en type non-délégué 'string'. Souhaitiez-vous appeler la méthode ? C:\OTAVIO\lireExcel\lireExcel\Excel.cs 165 20 lireExcel

Merci,
O. Reis
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

ça a marché!!!

Merci bcp!!!

O. Reis
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
xxx.ToString -> Objet représentant la méthode "ToString".

<hr />
-My Blog-
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Oui, xxx.ToString est utilisable dans un contexte de delegate, comme par exemple ici :

delegate string ToStringDelegate();

       int a = 5;
       ToStringDelegate t = a.ToString;
       Console.WriteLine(t());

Ma description n'est pas très précise parce que ce n'est pas le but, mais j'ai rien dis de faux non ?

Julien.
Messages postés
29
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
24 octobre 2007
1
Ben c'est un pointeur vers une methode dans ton cas present

NeuroCypher
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Pointeur sur une fonction, oui.
"Objet représentant une méthode... ", pas très clair

<hr />
-My Blog-
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Non c'est vrai, pas très clair.
Maintenant, bien que je reconnaisse mon tort, il faut avouer que dans un langage où les variables objets sont des types références (la variable est un pointeur vers l'objet et non l'objet lui-même, comme en Java, mais pas comme en C), il faut bien dire que la confusion est facile entre un objet représentant x et un pointeur vers x. Surtout lorsque l'on peut faire des assignations telles que

ToStringDelegate

t = a.ToString;

Mais pas :

IntPtr

ptr = a.ToString;
Le débuggeur parle de "Method group", je ne sais pas exactement comment c'est défini...

<hr width="100%" size="2" />Julien.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Seigneur, pouquoi une telle différence de mise en page entre la FreeTextBox et le rendu dans le forum ?!
Bon, recopiage sans la mise en forme de VS :

...
Surtout lorsque l'on peut faire des assignations telles que

ToStringDelegate

t = a.ToString;

Mais pas :

IntPtr ptr = a.ToString;

Le débuggeur parle de "Method group", je ne sais pas exactement comment c'est défini...

<hr width="100%" size="2" />Julien.
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

UP!!! En fait ça n'a pas marché...
test = m_Worksheet.Cells.get_Item(i, j).ToString();

sur cette ligne, il me sort "System.object" comme valeur de la variable test

O. Reis