Obtenez une gamme de groupes de cellules Excel C ++ / cli

J'ai une feuille de calcul Excel que je souhaite extraire des données de l'utilisation de .Net framework. La feuille de travail se présente comme ceci:

ABCDEFG 1 |hello| by | it |____|____| it | is | 2 | Hi | he | To |____|____|you | are| 

Comment puis-je get deux gammes distinctes pour tirer les deux "tables" en deux tables de données différentes?

Je comprends qu'il y a

 Excel::Range^ RANGE = Worksheet->Cells; 

Mais pour un, je ne comprends pas comment utiliser Range. Et deux, après avoir lu, apparemment returnnent toute la gamme de la feuille de calcul et ne séparent pas les deux «tables».

Est-ce que quelqu'un sait comment je pourrais get les plages "A1: C2" et F1: G2 "?

Worksheet->Cells sont censées être la feuille de calcul complète. Vous requestz une Range^ représentant toutes les cellules dans la feuille de calcul entière, et c'est ce que vous obtenez. (Citant MSDN: "Renvoie un object Range qui représente toutes les cellules de la feuille de calcul (pas seulement les cellules qui sont actuellement utilisées)").

Un object Range représente simplement un groupe de cellules; il n'est pas nécessairement attaché aux sous-tables dans une feuille de travail, comme vos "A1: C2" et "F1: G2" sont.

Pour get les sous-tables, utilisez la propriété CurrentRegion . Je crois que la façon de le faire est d'get la cellule A1 et d'appeler CurrentRegion pour get A1: C2 et F1 pour get F1: G2.

(De toute évidence, une meilleure design serait d'avoir vos deux sous-tables dans leurs propres feuilles dans le classur, si possible).

 //the namespace you'll need to include, Project->Properties->Add New Reference using namespace Microsoft::Office::Interop::Excel; //This is your particular Excel instance Excel::Application^ xl = gcnew Excel::Application(); //I like being able to see the sheet for simple programs xl->Visible = true; Excel::Workbook^ wb = xl->Workbooks->Open(Path2ExcelFile, 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); Excel::Worksheet^ ws1 = static_cast<Excel::Worksheet^>(wb->Sheets[SheetName1]); Excel::Worksheet^ ws2 = static_cast<Excel::Worksheet^>(wb->Sheets[SheetName2]); 

Maintenant, nous pouvons get les gammes

 Range^ rng1 = ws->Range["A1:C2","A1:C2"]; Range^ rng1 = ws->Range["F1:G2","F1:G2"]; 

Voici comment get les valeurs des cellules individuelles

 Ssortingng^ val1 = ws->Range["A1","A1"]->Value2->ToSsortingng(); 

Ensuite, une autre façon d'get la valeur des cellules individuelles

 ws->Range[((Excel::Range^)ws->Cells[(System::Object^)rowInteger, (System::Object^)columnInteger]), ((Excel::Range^)ws->Cells[(System::Object^)rowInteger, (System::Object^)columnInteger])]->Value2->ToSsortingng();