Laden Sie große Menge von excel-Daten mit EPPlus
Ich habe eine basic winforms-app, die ein Benutzer hochladen einer excel-Datei (.xlsx) und ich möchten, Lesen Sie den Inhalt dieser Datei also ich bin mit EPPlus.
Das problem ist, ich bin versucht zu laden, den Inhalt einer sehr großen excel-Datei, es hat 7 Registerkarten mit einer Registerkarte mit mehr als 200k Zeilen, und ein anderer Reiter mit 70k. Die anderen 5 insgesamt auf rund 50k.
Diese Datei wird auch nur weiter, um größer zu werden.(Das Ziel), Da ich die Daten importieren möchten, Lesen Sie die Daten, und je nach den Regeln/Daten habe ich, brauche ich zum schreiben der Daten zurück auf die excel-Datei, und exportieren es.
Ich habe Probleme, wenn auch mit EPPlus bei der Erreichung der laden der Daten.
hier ist der code, den
var file = new FileInfo(filePath);
using (var package = new ExcelPackage(file))
{
try
{
//Get the work book in the file
ExcelWorkbook workBook = package.Workbook; //Hangs here for about 2 mins
if (workBook != null)
{
if (workBook.Worksheets.Count > 0)
{
//Get the first worksheet
ExcelWorksheet currentWorksheet = workBook.Worksheets.First();
//gets the currentWorksheet but doesn't evaluate anything...
}
}
}
catch (Exception ex)
{
throw ex;
}
}
Den code hängt auf der Verpackung.Arbeitsmappe Linie für etwa 2 Minuten. Dann geht es hinab in die wenn-wo bekommt es die currentWorkSheet, und wenn ich den Inhalt der variable in meiner Uhr, es wird nichts geladen, da zeigt es:
Funktion Auswertung deaktiviert, da eine Vorherige Funktion Auswertung timed out. Sie müssen fortsetzen zu reaktivieren Funktion Auswertung.
Sah ich diese link von EPPlus und es zeigt, dass das einzige Problem mit dem laden von großen Dateien ist die Belastung von oben nach unten und von Links nach rechts, und Sie sagen mehr als 5.000. Ich habe viel mehr als das, obwohl, so bin ich Frage mich, ob dies könnte sogar möglich sein, mit EPPlus?
Außerdem, ich habe einige google-suchen und die meisten Fragen sind Sie nicht öffnen können, die große excel-Dateien auf dem server, wo Sie lokal...
Habe ich auch begann, mich auf das Open XML-SDK und es scheint besser zu sein, was Leistung und Performance betrifft, aber auch viel schwieriger zu bedienen code-Weise.
Wenn Sie haben keine Kontrolle darüber, wie die Dateien generiert werden, und die Arbeitsmappen sind im wesentlichen flach-Dateien, d.h. es werden keine Funktionen/Makros/Formatierungen beteiligt, nur einen Daten-dump, Sie wären besser dran mit mehreren separaten .csv-Dateien anstelle von einer excel-Datei mit unterschiedlichen Arbeitsmappen. Gelingt das nicht, @DJKRAZE 's Vorschlag von hämmern aus einem OpenXML-Lösung ist die Art und Weise, darüber zu gehen.
InformationsquelleAutor Robin | 2014-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese klingt wie ziemlich große Datensätze, so möchten Sie vielleicht, dies zu Lesen:
EPPlus Großen Dataset Problem mit Out of Memory-Ausnahme
Im Grunde, Sie können aus dem RAM mit "größeren" dataset. Aber es ist nicht nur die Anzahl der Zeilen, die Hinzugefügt, um die Größe, sondern auch die Spalten UND der Inhalt der einzelnen Zellen. Zeichenfolgen werden in der Regel nehmen viel mehr Platz als zahlen, so ist es irgendwann schwierig, vorherzusagen, Wann EPP beginnen wird, um Speicher-Probleme. Gerücht hat es die neueste version von EPP besser ist, aber ich haben es selber getestet.
Scheint, wie Sie es geschafft habe, basierend auf Ihre Kommentare-und das ist gut, aber halten Sie die Speicher-Beschränkungen in den Sinn. Ich aggree mit Ihnen - tun Sie es in Open XML-wäre nicht eine einfache übung.
Ist es möglich zu bekommen, um die Speicher-Beschränkung von be-und Verarbeitung einer Datei in Stücke schneiden, mit etwas ähnlich wie Linq ist
Skip(x)
undTake(x)
Methoden, oder ist es das laden der gesamten Arbeitsmappe in den Speicher, unabhängig?Ich habe versucht, die (vielleicht haben es erwähnt in meiner Antwort im verlinkten post). Kein Glück - sobald Sie öffnen Sie die Datei in der EVP-es wird alles geladen, egal was. Wie ich schon sagte, vielleicht haben Sie es herausgefunden in der neuesten version, die ist noch in der beta - schön, wenn Sie Tat.
Sie haben es zu erwähnen. Mein Leseverständnis tanks am Freitag.
Ich habe um die Speicher-Problem durch Lesen " laden der Daten in Blöcken. Ich hatte 90K+ Datensätze geladen und 10K in einer Zeit ohne out of memory.
InformationsquelleAutor Ernie