2010-12-03 54 views
0

J'ai une application C# qui ouvre un fichier Excel sur un lecteur réseau, lit les données et écrit dans une base de données. Je peux l'exécuter manuellement à partir d'un fichier de commandes, mais cela ne fonctionne pas lorsque j'exécute le fichier de commandes à partir de Windows Scheduler ou ActiveBatch. Je ne reçois pas une erreur - le travail se bloque quand il essaie d'ouvrir le classeur Excel (pas quand il ouvre l'application).Console C# avec Excel Interop se bloque comme une tâche planifiée sur Windows scheduler/ActiveBatch

Je suis sous les mêmes informations d'identification utilisateur lorsque je cours manuellement et à partir d'un planificateur. J'utilise .NET 3.5 sur Windows Server 2003 Enterprise SP2 avec Office 2007.

J'ai essayé le "Ogawa Hack" décrit here, et j'ai essayé d'utiliser un niveau d'indirection en écrivant un autre fichier batch qui serait être exécuté par le planificateur et appelle le fichier original. Ni travaillé.

D'autres idées que je peux essayer?

+0

Essayez d'ajouter l'attribut sur la méthode principale() [STAThread]. –

+0

Le lien vers le Ogawa Hack est ici, pas là où le lien ci-dessus pointe: http://stackoverflow.com/questions/1177974/word-interop-not-working-in-a-scheduled-task –

+0

Avez-vous pensé à/essayé de faire un travail de moteur de base de données? –

Répondre

0

Étant donné que votre application sera probablement exécutée sur un serveur, je recommande de ne pas utiliser Excel Interop pour cette tâche. Il existe des bibliothèques .NET disponibles, qui ne nécessitent pas l'installation d'Excel. Pour l'ancien format Excel < = 2003 regardez ici

http://jexcelapi.sourceforge.net/

(dans les fichiers section, vous trouverez un port .NET de cette lib Java). Pour les formats basés sur XML plus récente, vous pouvez utiliser celui-ci:

http://excelpackage.codeplex.com/