2016-06-08 10 views
0

Ich habe 2 Excel-Dateien in Server mit einer Größe von jeweils 1 GB. Ich muss die Dateien vergleichen und die Ergebnisse in einer separaten Tabelle senden.System.OutofMemory Ausnahme Excel 1 GB Daten

Ich konnte eine Excel-Datei in eine Datentabelle lesen, und wenn ich die Daten für ein anderes Excel lesen möchte, bekomme ich eine Ausnahme wegen Speichermangel.

file = new FileInfo(@"Remote Location" + strFileName); 
bool hasHeader = true; 

file.CopyTo(strPath, true); 
file = null; 
using (var pck = new OfficeOpenXml.ExcelPackage()) 
{ 
    using (FileStream stream = File.OpenRead(strPath)) 
    { 
     pck.Load(stream); //Getting issue out of memory for second excel file 
     stream.Close(); 
     stream.Dispose(); 
    } 
} 
+1

Off-Topic, aber man sollte 'Dispose()' nicht aufrufen, wenn man 'using()' Blöcke benutzt. Benutze einfach die letzte – MickyD

+0

Eigentlich habe ich es vor der Verwendung hinzugefügt .. Ich entfernte displose und schließe..aber immer noch gleiche Ausnahme.Die Datentabelle ist für den Vergleich erforderlich..So wenn ich es verwerfe, könnte ich die Daten verlieren. – Lavin

+0

Müssen Sie Tabellenkalkulationsstruktur oder ihre Daten vergleichen? – qxg

Antwort

4

Sie sind an der Grenze dessen, was ein 32-Bit-Prozess verarbeiten kann. Stellen Sie sicher, dass Sie 64-Bit-Windows verwenden, und stellen Sie sicher, dass Sie Ihre App im 64-Bit-Modus ausführen, klicken Sie mit der rechten Maustaste auf Project-> Properties-> Build und erzwingen Sie es auf x64 von der typischen Standardeinstellung "Any CPU".

Möglicherweise gibt es eine bessere Lösung für Ihr Problem, warum behandeln Sie nicht jedes Excel-Blatt als Datenquelle mit der Excel ODBC driver? Meine Gedanken sind, es wäre viel effizienter.