Excel - Lecture des Cellules Fusionnées (lignes) dans .NET avec C#
Salutations StackOverflow'lings,
Laissez-moi vous expliquer ma situation:
Permet simplement de dire que j'ai 3 colonnes (9 au total comme elles sont regroupées au nombre de 3) sur une seule ligne dans chacune des 3 colonnes a des données qu'il contient
Dans la ligne directement en dessous, j'ai 9 colonnes, chaque cellule ayant des données.
L'idée est de lire la première ligne avec les 3 colonnes, et ensuite savoir combien de temps ces colonnes span donc je peut affecter les valeurs correctes pour le moment je suis entrain de créer le xml résultant. Heres un croquis de ce que je suis en train de réaliser:
Ligne 1 Colonne 1 (gamme est fusionné sur 3 colonnes) = Équipes de Football
Ligne 2 Colonnes 1, 2, 3 accueilleront chacune de données différentes sur les Équipes de Football
La ligne 1 de la Colonne 2 (gamme est fusionné sur 3 colonnes) = Joueurs de Football
Ligne 2 Colonnes 4, 5, 6 accueilleront chacune différentes données concernant les Joueurs de Football
La ligne 1 de la Colonne 3 (intervalle de fusion sur 3 colonnes) = Football Finances
Ligne 2 Colonnes 7, 8, 9, chaque contenir des données différentes sur le Football Finances
Pour quelque raison que quand j'ai lu la première ligne, j'obtiens les valeurs:
[0] = "Les Équipes De Football"
[1] = null
[2] = null
[4] = "Les Joueurs De Football"
Mais quand j'ai lu la ligne deux-je obtenir le tableau complet (9) de colonnes! Le code j'utilise peut être vu ci-dessous:
Range dataRange = worksheet.get_Range("A1", Missing.Value);
dataRange = dataRange.get_End(XlDirection.xlRight);
string dataAddress = dataRange.get_Address(
false, false, XlReferenceStyle.xlA1,
Type.Missing, Type.Missing);
dataRange = worksheet.get_Range("A1", dataAddress);
//Cast the range into an object array
object[,] dataValues = (object[,])dataRange.Value2;
Toute aide/conseils/claque dans la bonne direction serait grandement apprécié!
Vous devez vous connecter pour publier un commentaire.
Lorsque vous avez fusionné les cellules, les cellules sont toujours là (en termes de votre code), c'est juste qu'ils ont des valeurs null. Donc, la première cellule dans les cellules fusionnées groupe aura la valeur.
Après la lecture de vos commentaires, et en relisant ton code, je crois que le problème vient de la manière dont vous prenez la dernière colonne:
Je trouve souvent que de faire une " Fin " à la droite ne permet pas nécessairement d'obtenir le dernier élément sur la droite, surtout si il y a des espaces entre les cellules (ce qui est le cas ici, parce que les cellules sont fusionnées). Il pourrait donc être préférable de le faire (avec un peu de nettoyage pour enregistrer quelques lignes) - 'XFD" la dernière colonne dans Excel 2007 et au-dessus:
Noter que ce code ne sera pas obtenir les 2 dernières valeurs null dans le troisième groupe, la seule façon de le faire est de définir explicitement la gamme comme ceci: