el_teedee
Messages postés497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 2015
-
6 août 2005 à 22:17
el_teedee
Messages postés497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 2015
-
10 août 2005 à 08:58
Bonjour, tout est dans le titre,
je récupère un System.Array qui, par exemple est un tableau de string [5,3] :
[1,1]
[1,2]
[1,3]
...
[5,1]
[5,2]
[5,3]
J'aimerais pour pouvoir parcourir ce tableau, le mettre dans un tableau
de string[5,3]. (PS : le nb de lignes et de colonnes sera toujours
connu).
Comment puis-je faire ? J'ai essayer différents cast, mais il y a toujours une erreur. Est-ce que c'est seulement possible ?
Sinon, existe-il une méthode pour parcourir un System.Array, genre équivalent de foreach... ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 6 août 2005 à 22:37
Salut,
System.Array est précisément la classe de base de tout tableau en .Net.
=>
string[,] strArray = (string[,])array; // avec array une instance de System.Array
Cocoricoooooooo !!!!
coq
MVP Visual C#
Vous n’avez pas trouvé la réponse que vous recherchez ?
el_teedee
Messages postés497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 20159 7 août 2005 à 03:02
> Coq, j'ai essayé ceci :
string[,] strArray =(string[,])r.Cells.Value2;
=>Erreur, "le cast n'était pas valide"
> Bidou, j'ai essayé ça :
string[] s = new string[15];
System.Array ar = r.Cells.Value2.ToArray();
System.Array.Copy(ar, 0, s, 0, ar.Length);
Il marque que
ToArray n'est pas disponible car en fait r.Cells.Value2, (ce que
j'avais appelé mon array) est en fait un Object, donc il n'a que ceci
comme propriété et méthode disponibles :
Equals
GetHashCode
GetType
ToString
Un peu plus de précisions sur le contexte, si vous le voulez bien. J'essaye d'ouvrir un classeur excel. Ma variable "r" est :
Excel.Range r = xlFeuill1.get_Range (text_case_depart.Text ,text_case_arrivee.Text);
Donc, si je rentre ("A1","B3"), j'ai ceci quand j'ajoute des espions :
+ r {System.__ComObject} Excel.Range
+ Cells {System.__ComObject} Excel.Range
Value System.Object
- Value2 {System.Array} System.Object
[1,1] "coucou" string
[1,2] "salut" string
[2,1] "bonjour" string
[2,2] null string
[3,1] null string
[3,2] null string
Pour r.Cells.Value2 (ci dessus), le type est "System.Object" et la valeur est "System.Array"
Maintenant, je veux foutre .Value2 dans une variable dont le type me permet de la parcourir, c'est mieux...
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 7 août 2005 à 03:40
// object o = ( object )new string[ 2, 2 ];
string[ , ] array = ( string[ , ] )o;
Si ça ne marche pas, c'est que ton type n'est pas un tableau de chaines à deux dimensions, ou c'est un "jagged array" ( string[][] ) mais je n'y crois pas trop. Si tu es certain que ton type est un tableau tu peux le caster en Array:
el_teedee
Messages postés497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 20159 7 août 2005 à 12:08
Thx ! Coq
Voilà le passage intéressant : (enfin je pense, ca y ressemble)
You also may want to
note the ConvertToStringArray method which is used to convert a
System.Array into a string array. If someone knows an
easier way to do this, please let me know and I'll alter the
article. The problem is that an Excel Array comes back as
two dimensional even if you are selecting a range of a single
row, so you need to change the 2-d array into something the
listview can accept. Also the listview array is 0 based and the
Excel range array is 1 based.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 7 août 2005 à 15:21
Faut connaitre le model objet d'Excel pour savoir que le tableau est de base 1. Entre moi qui te proposait de caster ton object en Array et Bidou qui t'avait donné la méthode Array.GetValue, tu avais la solution. : )
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 7 août 2005 à 18:31
Oui, je suis réputé comme ferveur admirateur de la commission de terminologie (en charge de terminer la phase de démolition du français "technique") et de néologie (ils sont dans la matrice...)
el_teedee
Messages postés497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 20159 10 août 2005 à 08:58
Re,
lol maintenant je suis bloqué dans
l'autre sens, c'est-à-dire, que bien évidemment j'ai réussi à extraire
le contenu du classeur dans un tableau de string. Dans celui-ci je fais
mes recherches et modifiations. Mais le problème, c'est pour
enregistrer les modifications dans le fichier Excel.
Au début je faisais xlClasseur.SaveCopyAs mais
je me suis vite rendu compte que je ne touchais pas à la variable
xlClasseur, donc que j'aurais du mal à enregistrer les modifications.
Alors j'ai pensé faire la méthode inverse proposée dans ConvertToStringArray. C'est jouable ou pas de convertir string[,] vers Array d'un classeur excel
Si qqln avait déjà le code pour enregistrer les modifs