C # Bei Öffnen große Excel-Datei (150 MB) von OleDbConnection System.OutOfMemoryException

stimmen
1

Ich habe zu öffnen, eine große Datei 150MB mit Halb millon von Datensätzen (Excel 2007 XLSX-Datei) übertreffen, und ich muss es auf SQL Server migrieren, ich OleDbConnection verwenden, aber wenn ich versuche, die Verbindung zu öffnen mehr als 5 Minuten in Anspruch nimmt und danach ein System.OutMemoryExcepion erscheint. Ich denke, diese Verbindung versucht, alle Dateien im Speicher zu öffnen, wie kann ich Zeile für Zeile lesen. Ich arbeite mit Visual Net 2005 und C #

string archivoExcel=c:\largeExcel.xlsx
string conneStringInraSIS = Provider=Microsoft.ACE.OLEDB.12.0; +
                                    Data Source= + archivoExcel + ; +
                                    Extended Properties='Excel 12.0;HDR=YES;';


OleDbConnection connexcel = new OleDbConnection(conneStringInraSIS);
connexcel.Open();        
Veröffentlicht am 30/12/2009 um 01:51
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
0

Neue Antwort (basierend auf den Informationen in den Kommentaren):

Schauen Sie in VSTO. Ich würde eine Addin erstellen, die der Manager Schaltfläche klicken, um eine Band erlauben würde, die Daten in SQL Server zu laden, und dann Informationen von SQL Server abgerufen wird (dies ermöglicht es Excel seine eigenen Dateien zu handhaben, genau, wie sie am besten).

Hier ist ein Link, sollten Sie beginnen: MSDN Code - Beispiel

und Sie können VSTO herunterladen hier .

Beantwortet am 30/12/2009 um 01:58
quelle vom benutzer

stimmen
1

Priorität # 1 sollte die Daten aus der xlsx-Tabelle bekommen. Bewerben Geschäftslogik einmal dies geschehen ist. Ich würde exportieren CSV aus den Blättern und mit ihnen umgehen.

Beantwortet am 30/12/2009 um 02:30
quelle vom benutzer

stimmen
0

Einige der Kommentare vorschlagen Exportieren der Excel-Dateien in CSV und Parsen die CSV-Datei Zeile für Zeile, aber das scheint nicht eine Lösung für Ihr Problem.

Was man jedoch tun , ist die Excel - ActiveX - Objekte verwenden , um die xlsx - Datei zu öffnen und als CSV - Datei Code speichern. Das Arbeitsmappe - Objekt hat eine SaveAs - Methode , die ein Dateiformat erfolgt.

So können Sie die CSV-Daten direkt aus der xlsx-Datei erhalten und müssen nicht haben Ihre Kunden darüber keine Sorgen.

Dies setzt voraus, dass Sie Excel auf dem System installiert ist, diesen Prozess ausgeführt wird.

Beantwortet am 30/12/2009 um 02:41
quelle vom benutzer

stimmen
1

Ich habe dieses Problem konfrontiert. Das Beste, was ich im Umgang mit diesem Problem zu finden, ist, dass Sie unter codeplex.com und downloaden Excel.dll. Diese DLL wird dieses Problem löst sehr leicht. Mit diesem können Sie direkt Ihre Daten zu einem Datensatz speichern und tun, was immer Sie damit tun wollen, dann. Sie würden einen Beispielcode vor Ort finden.

Beantwortet am 24/12/2010 um 09:59
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more