Objet Excel sur C#

Résolu
otavioreis Messages postés 82 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 4 mars 2008 - 25 sept. 2007 à 17:02
otavioreis Messages postés 82 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 4 mars 2008 - 27 sept. 2007 à 14:47
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

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 sept. 2007 à 22:20
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.
3
NeuroCypher Messages postés 29 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 24 octobre 2007 1
25 sept. 2007 à 17:14
Bonjour,

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

NeuroCypher
0
otavioreis Messages postés 82 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 4 mars 2008
25 sept. 2007 à 17:18
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
0
otavioreis Messages postés 82 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 4 mars 2008
26 sept. 2007 à 10:20
ça a marché!!!

Merci bcp!!!

O. Reis
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
26 sept. 2007 à 12:25
xxx.ToString -> Objet représentant la méthode "ToString".

<hr />
-My Blog-
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
26 sept. 2007 à 14:17
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.
0
NeuroCypher Messages postés 29 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 24 octobre 2007 1
26 sept. 2007 à 14:36
Ben c'est un pointeur vers une methode dans ton cas present

NeuroCypher
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
26 sept. 2007 à 17:36
Pointeur sur une fonction, oui.
"Objet représentant une méthode... ", pas très clair

<hr />
-My Blog-
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
26 sept. 2007 à 18:04
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.
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
26 sept. 2007 à 18:07
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.
0
otavioreis Messages postés 82 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 4 mars 2008
27 sept. 2007 à 14:47
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
0
Rejoignez-nous