Ich habe eine vorhandene Delphi-Desktop-App, die ich als eine asp.net mvc app umschreiben werde.Wie kann ich eine Excel-Datei von asp.net mvc aktualisieren und speichern?
Die Desktop-App verfügt über 120 Excel-Berichte. Diese Berichte enthalten in der Regel nur wenige benannte Zellen mit Konfigurationsinformationen (Client-ID usw.), einige Datenabfragen, die auf SQL Server-Daten zurückgehen, und einige zentrale Tabellen.
Um einen Bericht über den Desktop-App, verwende ich OLE-Automatisierung
- öffnen Sie den Bericht
- bevöl benannten Zellen mit den richtigen Daten
- Verwendung ActiveWorkbook.RefreshAll(), um Update-Abfragen zu erzeugen und Pivot-Tabellen
- Speichern Sie den Bericht
Ich mag würde dies in m tun y Webanwendung. Die automatische Automatisierung wird jedoch nicht auf dem Server unterstützt und funktioniert nicht. Keine der Excel-Komponenten, die ich gesehen habe, scheint das Aktualisieren der Abfragen und/oder der zentralen Tabellen zu unterstützen.
Derzeit scheint meine beste Option, die Berichte mit einigen Berichtserstellungsprogramm neu zu erstellen und diese in Excel zu exportieren. Die resultierenden Dateien benötigen jedoch länger zum Schreiben, haben weniger Funktionalität (keine zentralen Tabellen) und natürlich gibt es 120 davon.
Vorschläge, wie ich meine vorhandenen Berichte verwenden kann?
aktualisieren
Excel auf dem Server installiert ist, die gleiche Version wie auf dem Entwicklungscomputer.
Mein mvc-Code ist so etwas wie:
objApp = new Application();
objBooks = objApp.Workbooks;
objBook = objBooks.Open(FileName);
objApp.DisplayAlerts = false; // don't warn if pivot table changed
objApp.ActiveWorkbook.RefreshAll();
objBook.SaveAs(newFileName);
Auf der Dev-Maschine fein es funktioniert, aber auf dem Server nicht auf der ersten Zeile
objApp = new Application();
mit System.UnauthorizedAccessException: Suchen Die COM-Klassenfactory für Komponente mit CLSID {00024500-0000-0000-C000-000000000046} ist aufgrund des folgenden Fehlers fehlgeschlagen: 80070005 Zugriff verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED)).
Upvote auf dem EPPlus. Große Bibliothek, aber begrenzte Pivot-Tabellen-Unterstützung von dem, was ich herausgefunden habe. – iivel