2016-07-23 11 views
2

Ich schrieb eine C# App, die eine meiner ersten war (ich bin ein Noob hier)! Die App hat mit Excel Interop gearbeitet und viele Zellen gesetzt, was extrem lange dauert. Danach habe ich gehört, dass es möglich ist, eine Reihe von Zellen in nur einem Anruf zu setzen. Das ist, was ich versuche, und obwohl es mehrere Threads zu diesem Thema gibt, hat keiner von ihnen für mich funktioniert oder ich habe es nicht verstanden.Visual C# Setzen mehrerer Zellen auf einmal mit Excel Interop

Wenn Sie Google, werden die meisten Menschen diese Methode vorschlagen:

Excel.Range rng = (Excel.Range)xlWorkSheet.get_Range(xlWorkSheet.Cells[1, 1], xlWorkSheet.Cells[3, 3]); 
rng.Value = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 

Oder zumindest etwas mit get_Range. Aber mein Problem ist, ich kann get_Range weder auf dem Arbeitsblatt noch auf meiner Arbeitsmappe oder initialisierten Excel-App ausführen. Die Methode existiert nicht und ich habe das Gefühl, dass das, was ich im Internet gefunden habe, alles veraltet ist !!!

Ich hoffe wirklich, dass jemand mir dabei helfen kann :) Ich würde gerne eine Zeile setzen oder wenn es nicht zu kompliziert ist ein ganzes Blatt auf einmal.

Antwort

5

Mindestens ab Version 15.0 der Excel-Objektbibliothek wurde die get_Range()-Methode entfernt und durch eine Range-Eigenschaft ersetzt. Mit dieser Eigenschaft kann die gleiche Funktionalität wie zuvor von get_Range() bereitgestellt werden.

Beachten Sie auch, dass der Wert zu einem 1-dimensionalen Array Einstellung in eine Ausgabe wie die folgende Ergebnis, das ist wahrscheinlich nicht das, was Sie wollen:

Bad output

Der folgende Code beide Probleme behebt:

var rng = (Excel.Range)xlWorkSheet.Range[xlWorkSheet.Cells[1, 1], xlWorkSheet.Cells[3, 3]]; 
rng.Value = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; 

Daraus ergibt sich wie folgt ausgegeben:

Good output

+0

Vielen Dank, das wird meine App 100 mal schneller machen: D – Stringering

Verwandte Themen