2016-03-30 12 views
0

Ich habe ein einfaches Verfahren zum Konvertieren xlsx nach CSV.Konvertieren von Excel zu CSV über asp.net (C#) unter IIS

public static void ConvertExcelToCsv(string source, string destination, int sheetNumber = 1) 
{ 

    if (File.Exists(destination)) File.Delete(destination); 

    Excel.Application xl = new Excel.Application(); 

    xl.DisplayAlerts = false; 
    Excel.Workbook workbook = xl.Workbooks.Open(source); 
    // workbook.Close(true); 
    workbook.SaveAs(destination, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV); 
    object misValue = System.Reflection.Missing.Value; 

    if (workbook != null) 
    { 
     workbook.Close(false, Type.Missing, Type.Missing); 
     xl.Workbooks.Close(); 
     Marshal.ReleaseComObject(workbook); 
    } 


    xl.Quit(); 
    GC.Collect(); 
    Marshal.FinalReleaseComObject(xl); 
} 

Alles funktioniert gut auf meinem lokalen Computer und auch lokalen IIS. Aber nach dem Hochladen auf den Webserver scheint es nicht zu funktionieren. Alles, was es tut, ist etwa 3 Minuten und dann eine Auszeit.

ich auch erlaubt Berechtigungen in der Komponente

Services -> Computers -> My Computer -> DCOM Config -> Microsoft Excel Application -> IIS_IUSRS

und auch erstellt Desktop-Ordner

C:\Windows\SysWOW64\config\systemprofile\

und auch in 32-Bit-:-)

So jetzt, ich habe keine Ahnung, warum es nicht funktioniert. Haben Sie ähnliche Erfahrungen damit oder können Sie mir einen Hinweis geben, was ich tun soll, bitte.

+1

Dieser Code Excel, indem tatsächlich auf einem Windows ‚privaten Desktop‘ funktioniert, die Sie nicht sehen können. Auf Web-Servern ist Excel oft nicht installiert. Selbst wenn dies der Fall ist, ist das Ausführen des vollständigen Excel-Programms für eine Dateikonvertierung _awful_ für die Leistung. –

Antwort

0

Was ist der genaue Fehler, den Sie erhalten? Überprüfen Sie Ihre IIS-Protokolle und das Anwendungsereignisprotokoll auf bestimmte Fehler.

Ein paar Dinge zu prüfen:

  1. stellen Sie sicher, aktivieren 32-Bit-Anwendungen ist für Ihre Anwendung Pool auf True gesetzt
  2. Wenn Sie Excel auf Ihrem Webserver installiert haben Sie die kopieren müssen Interop-Assemblys, wenn Sie Ihre Site veröffentlichen. Setzen Sie dazu Copy Local auf True für den Verweis auf das Interop.
  3. Stellen Sie sicher, Ihre App die entsprechenden Berechtigungen auf den Weg zu
  4. von source und destination bezeichnet hat
+0

Ja, ich habe Büro 2013 auf diesem Webserver und Fehlermeldung ist sehr seltsam für mich: 2016-03-30 15:08:57 W3SVC5 C1W13622 15.57.47.152 POST /SecondForm.aspx - 84 - 15.87.165.14 Mozilla/5.0+ (Windows + NT + 6.1; + WOW64) + AppleWebKit/537.36 + (KHTML, + wie + Gecko) + Chrome/49.0.2623.87 + Safari/537.36 - http://c1w13622.itcs.hpicorp.net:84/ SecondForm.aspx 500 64 0 5361049 126176 – SmithiM

+0

Wenn ich es von Visual Studio versuche, was ich auf dem Webserver bekam, funktioniert alles gut ... – SmithiM

+0

Ich bin sehr neu in IIS Bereich also bitte, könnten Sie mir Ihren Punkt Nr. 1 erklären, vielleicht Schritt für Schritt :-) – SmithiM

Verwandte Themen