Zeile / Spalten in Excel schreiben
-
Hallo, wenn ich in Excel die Informationen ablege gehe ich Zelle für Zelle durch. Bei 200 Werten habe ich mittels Stoppwatchklasse eine Zeit von 2,3 sek bestimmt.
Nun wollte ich fragen ob es irgendwie schneller auf Basis der Com Schnittstelle.Gibt es denn die Möglichkeit ganze Zeilen oder Spalten einzufügen? Oder sogar ganze Bereiche das benötige ich zwar nicht aber vielleicht kommt doch der Fall?Das ist mein Code:
public: bool InsertRowInActiveSheet(int row, int column, List<String^>^ data) { ws = (Excel::Worksheet^)excel->ActiveSheet; //Aktiviertes Sheet laden falls Anwender das Sheet gewechselt hat for each(String^ sdata in data) { try { ws->Cells[row,column++] = sdata;//Eine Information in die Zelle schreiben } catch(Exception^) { return false; // Es ist ein Fehler aufgetreten beim schreiben in das Excelsheet } } return true; }
-
Du musst dem Excel mitteilen, dass Du ganz viel machen will.... wiess aber nicht mehr wie die Funktion heisst
Villeicht "Visible = false"...
Irgendwas gibt es da... dann zeigt er es nicht an und macht auch keine Berechnungen, bis Du alles abgeschlossen hast.
-
Danke für die Antwort
Bei 200 Werten hatte ich vorher 2,3 sek und nun sind es 0,2
Aber ein Problem bei der Sache besteht und zwar blinkt dann Excel kurz auf. Eben weil es ja vorher ausgeblendet wird und dann wieder aktiviert. Wenn ich das Visible auf das Sheet anwende, bringt es leider keinen Performancegewinn mit sich.
Microsoft::Office::Interop::Excel::Application^ excel; ...//irgendwas dazwischen methode() { excel->Visible = false; ... excel->Visible = true }
Nun die Sheet Variante
ws->Visible = xlSheetVeryHidden
-
Nimm mal
excel->ScreenUpdating = false;
(gefunden dank "http://www.bing.com"
)
und
Application.Calculation = xlCalculationManual
-
Danke für den Hinweis, ich werde es morgen mal Ausprobieren habe gerade meinen Lappi nicht am Mann.
Ich werde berichten
-
Jochen Kalmbach schrieb:
Nimm mal
excel->ScreenUpdating = false;
(gefunden dank "http://www.bing.com"
)
und
Application.Calculation = xlCalculationManual
Das ist genau die Antwort die ich gesucht habe. Vielen Dank nochmal!