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?
in diesem Ansatz ist es nicht notwendig, Excel auf dem Zielrechner zu installieren
%Vor%Im Folgenden:
%Vor%oder:
%Vor%oder:
%Vor%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:
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.
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%Tags und Links asp.net-mvc c# iis excel oledb