Lesen begrenzter Zeilen von Excel-Datei, die auf IIS hochgeladen wurde

8

Ich habe eine asp.net mvc App auf IIS gehostet. Ich habe ein Formular von wo Benutzer Excel-Dateien mit 50k + Zeilen hochladen. Ich habe die Excel-Datei mit dem folgenden C # -Code gelesen.

%Vor%

Das Problem ist, dass es nur bis zu 30k Zeilen liest, aber niemals die gesamte Excel-Datei.

Interessanterweise kann ich (mit demselben Code) alle Zeilen lesen, wenn ich die mvc app mit Visual Studio ausführe, aber wiederum nie von IIS (IIS ist auch auf meinem Rechner) gehostete Webseite.

Irgendwelche Ideen, warum das passiert?

    
levi 06.06.2016, 07:05
quelle

5 Antworten

5

in diesem Ansatz ist es nicht notwendig, Excel auf dem Zielrechner zu installieren

%Vor%

Im Folgenden:

%Vor%

oder:

%Vor%

oder:

%Vor%     
Yasser Bazrforoosh 28.06.2016 11:44
quelle
4

Können Sie einige Spezifikationen Ihres Servers veröffentlichen? Handelt es sich bei VM und Cloud um Zufall? In der Vergangenheit war ich erfolgreich mit:

  1. Koogra: Ссылка
  2. NPOI: Ссылка

    Um .xls-Dateien zu lesen, aber wenn Sie Ihre Dateien auf .xlsx beschränken können, würde ich ClosedXML verwenden. Ich habe viele große Dateien 50K + mit ClosedXML auf einer bulligen VM in Azure ohne Problem gelesen. Ich habe das Gefühl, dass Sie eine Userspace-Wand auf dem Server treffen. Wenn ein Benutzer einen solchen Prozentsatz erreicht, erreicht er sein Nutzungskontingent und beendet die Aufgabe.

Kevin B Burns 23.06.2016 13:36
quelle
4

Dieses Problem kann gelöst werden, indem die Daten in zwei Teilen wie 25K + 25k = 50K gelesen werden. Sie müssen die ausgewählte Abfrage nur wie folgt aktualisieren:

%Vor%     
Vipul 24.06.2016 07:21
quelle
2

Ich habe ein kleines Beispiel auf meiner Seite erstellt, das SELECT TOP zusammen mit ORDER BY verwendet, dann können Sie die Ergebnisse erhalten:

Überprüfen Sie den Code:

%Vor%     
Bayeni 24.06.2016 12:06
quelle
2

Sie können versuchen, Ihre Datentabelle zu füllen, indem Sie einen Teil der Zeilen nach dem Chunk lesen, anstatt einen einzigen Lesevorgang durchzuführen.

Das Schöne an diesem Ansatz ist, dass Sie nicht auf 50k-Datensätze beschränkt sind, sondern sich an die tatsächliche Kardinalität Ihrer Datentabelle anpassen.

Dieser Code funktioniert auf meinem Computer (Win10 X64, VS2010 Express):

%Vor%     
Max Lambertini 28.06.2016 12:04
quelle

Tags und Links