2008-09-17 5 views
2

Wir haben eine Excel 2002/XP-basierte Anwendung, die mit SQL 2000/5 interagiert, um relativ komplexe versicherungsmathematische Berechnungen zu verarbeiten. Die Anwendung funktioniert gut, ist aber schwer zu verwalten.Hat jemand ein gutes Beispiel für die Steuerung mehrerer Excel-Instanzen aus einer .Net App?

Wir versuchen, eine "Controller" -Anwendung oder einen Dienst zu erstellen, der diese verschiedenen Instanzen von Excel verwalten und überwachen kann (Start/Stopp/Prozessbefehle usw.), aber es ist leider ein bisschen ein InterOp-Albtraum.

Hat jemand ein gutes (d. H. Funktionierendes) Beispiel dafür, etwas in VB.Net oder C# zu tun?

+0

Brauchen Sie sogar Excel? Warum machen Sie die Berechnungen nicht selbst in Ihrer .NET App? –

+0

Predigt zum Chor! Der Umstellungsaufwand ist einfach zu hoch und das Management wird die Rechnung für das "Umcodieren" einer etablierten Anwendung nicht bezahlen. –

Antwort

3

Tun Sie es nicht!

Wir haben wochenlang versucht, so etwas zum Laufen zu bekommen und es verhält sich einfach nicht wie angekündigt. Fange nicht mal an - gib sofort auf!

Die einzigen Optionen, die Sie wirklich haben, ist eine schwere serverseitige MOSS-basierte Implementierung - Excel (Web) -Dienste (sie nennen es so). Windows-basierte COM-Excel-Interop ist ziemlich tot und wird von MOSS ersetzt werden.

Die andere Option ist die Verwendung von SpreadsheetGear. Es ist eigentlich ein fantastisches Produkt

  1. Es ist lightlingly schnell
  2. Der Motor von der Benutzeroberfläche getrennt ist, so dass Sie es verwenden können Excel Sachen Server-Seite zu tun (ohne Büro installiert)
  3. Ziemlich billig
  4. Hat eine ähnliche API an dem vorhandenen Excel-COM api so über sie bewegenden Code relativ einfach ist

alles auf den Formeln ab, die Sie in Ihrer Tabelle benötigen. Sehen Sie sich die Formelliste für Spreadsheet Gear an und ob es eine Übereinstimmung gibt.

+0

"Denken Sie nicht einmal darüber nach!Es scheint eine allgemeine Antwort zu sein. Ich denke, wir werden versuchen, einen einfachen Dienst vom Typ "Start/Stop/Kill" zu schreiben, aber der Konsens scheint zu sein, dass die Interaktion mit mehreren Instanzen ein gefährlicher Weg ist. –

1

Sie können einen Blick auf dieses Produkt nehmen wollen: http://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx

Es ist alles verwalteten Code und direkte .NET-Bibliotheken. Keine InterOp Kopfschmerzen. Ich habe es selbst nicht benutzt, aber ich habe sehr gute Dinge von Leuten in der Finanzwelt gehört.

+1

Wir haben dieses Produkt bewertet. Leider kann es unsere Bedürfnisse nicht ganz abdecken und der Umstellungsaufwand wäre enorm. –

1

Wir haben einen Dienst geschrieben, der eine einzelne Instanz von Excel 2003 steuert. Es ist uns nie gelungen, Excel-Instanzen sauber zu schließen. Daher starten wir eine Instanz, wenn der Dienst zum ersten Mal aufgerufen wird.

2

Interop funktioniert gut, außer dass Sie immer mit Verweisen auf Excel-Objekte enden, die nicht freigegeben sind, sodass Excel-Instanzen nicht geschlossen werden. In dem folgenden KB-Artikel erklärt, warum:

http://support.microsoft.com/default.aspx/kb/317109/EN-US/

Sie das Problem vermeiden, wenn Sie sehr sorgfältig Code für eine begrenzte Anzahl von Interop-Szenarien geschrieben. Aber im Allgemeinen ist es sehr schwierig, es zuverlässig arbeiten zu lassen.

Verwandte Themen