Quelqu'un a-t-il un bon exemple de contrôle de plusieurs instances Excel à partir d'une application .Net?

StackOverflow https://stackoverflow.com/questions/87576

  •  01-07-2019
  •  | 
  •  

Question

Nous avons une application Excel 2002 / XP qui interagit avec SQL 2000/5 pour traiter des calculs actuariels assez complexes. L’application remplit bien sa fonction, mais elle est difficile à gérer.

Nous essayons de créer un "contrôleur". application ou service capable de gérer et de surveiller ces différentes instances d’Excel (commandes de démarrage / arrêt / traitement, etc.), mais c’est malheureusement un peu le cauchemar InterOp.

Quelqu'un a-t-il un bon exemple (c'est-à-dire qui marche) de faire quelque chose comme ça en VB.Net ou en C #?

Était-ce utile?

La solution

Ne le faites pas!

Nous avons essayé pendant des semaines d’obtenir un produit de ce type, qui ne se comporte tout simplement pas comme annoncé. Ne même pas commencer - abandonner immédiatement!

Les seules options que vous avez réellement sont une implémentation lourde basée sur MOSS côté serveur - des services Excel (Web) (ils l’appellent ainsi). L'interopérabilité COM Excel basée sur Windows est pratiquement morte et sera remplacée par MOSS.

L’autre option consiste à utiliser SpreadsheetGear. C'est en fait un produit fantastique

  1. C’est très rapide
  2. Le moteur est séparé de l'interface utilisateur, vous pouvez donc l'utiliser pour effectuer des tâches dans Excel, côté serveur (sans installation de bureau)
  3. Assez bon marché
  4. Possède une API similaire à l’API Excel existante, ce qui facilite le transfert de code

Tout dépend des formules dont vous avez besoin dans votre feuille de calcul. Consultez la liste des formules de Spreadsheet Gear et recherchez une correspondance.

Autres conseils

L'interopérabilité fonctionne bien, sauf que vous vous retrouvez toujours avec des références à des objets Excel non publiés. Les instances Excel ne se ferment donc pas. L'article de la base de connaissances suivant explique pourquoi:

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

Vous pouvez éviter le problème si vous avez écrit du code très soigneusement pour un nombre limité de scénarios Interop. Mais dans le cas général, il est très difficile de le faire fonctionner de manière fiable.

Vous voudrez peut-être jeter un coup d'œil à ce produit: http: // www. spreadsheetgear.com/products/spreadsheetgear.net.aspx

Tout est du code géré et des bibliothèques .NET directes. Pas de maux de tête InterOp. Je ne l'ai pas utilisé moi-même, mais j'ai entendu de très bonnes choses de la part du monde de la finance.

Nous avons écrit un service qui contrôle une instance unique d'Excel 2003. Nous n'avons jamais réussi à obtenir une fermeture propre des instances Excel. Nous démarrons donc une instance lorsque le service est accédé pour la première fois et n'utilisons que cela, en sérialisant les demandes des clients.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top