Laden...

Große Menge an Werten einer Excel Tabelle schnell und effektiv auswerten

Erstellt von _fabi vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.288 Views
_
_fabi Themenstarter:in
5 Beiträge seit 2013
vor 10 Jahren
Große Menge an Werten einer Excel Tabelle schnell und effektiv auswerten

Hallo zusammen!

Ich habe ein Quell-Arbeitsblatt mit einer großen Menge an Daten (ca. 2000 Spalten und 300 Reihen). Ich benötige nur gewisse Spalten, daher lösche ich die dazwischenliegenden Spalten über:


myWS.Columns[neededColumn +1].Delete();

Anschließend manipuliere ich die Werte in manchen Spalten. Das löse ich im Moment über eine for-Schleife:


for (i = 2; i < iLastLine; i++)
{
myWS.Cells[i, column] = myWS.Cells[i, column-1] * 100;
}

Das funktioniert so natürlich, ist aber furchtbar langsam. Im Moment benötigt diese Formatierung der Quell-Datei ca. 18 Minuten, und da habe ich mich gefragt, ob man das auch effektiver lösen kann.
Das kann ja nun wirklich nicht der effektivste Weg sein...

Wenn mir jemand einen Tipp, irgendein Schlagwort geben kann, dann suche ich selbst weiter.

Vielen Dank schon mal,
lg

_fabi

D
615 Beiträge seit 2009
vor 10 Jahren

Hallo __fabi

Anstatt Excel zu automatisieren kannst du direkt auf das XML des Office Dokuments zugreifen via OPEN XML.

Dies ist zwar nicht ganz so "konfortabel" aber dürfte enorm viel schneller sein.
Es gibt auch C# Libs welche das Arbeiten mit Open XML erleichtern... ( z.B. GemBox Document )

Beste Grüsse

Diräkt

Edit:
=> Ein weiterer Vorteil ist natürlich die Unabhängigkeit ein Office installiert haben zu müssen....

Gelöschter Account
vor 10 Jahren

Die Bearbeitung auf XML Basis ist eine gute Option wenn du nicht unter Excel 2007 gehen musst und dein Programm kein Addin ist. Dann lohnt es sich das OpenXML SDK von Microsoft zu besorgen und Bearbeitung auf Dateibasis ganz ohne Excel direkt zu erledigen. Es gibt wie schon erwähnt auch gute Komponenten die das nochmal vereinfachen. Mein Vorposter hat allerdings eine kommerzielle Variante verlinkt und ich denke eine kostenfreie tuts auch so wie diese sehr gute hier ClosedXML

Falls das aus irgendwelchen Gründen nicht geht, bestehen schon noch Möglichkeiten die Performance zu verbessern dadurch das man die Menge der Calls reduziert in dem man möglichst viele Werte als 2 dimensionales Array mit einem Schlag abholt.

_
_fabi Themenstarter:in
5 Beiträge seit 2013
vor 10 Jahren

hey super, vielen Dank!

Das ist genau die Art von Antwort, die ich mir erhofft hatte. Werde mir das mal genau ansehen, da ich gar nicht wusste, dass das geht.

Vielen Dank euch und schönen Abend noch,

_fabi