2009-08-12 10 views
3

J'ai cette application Web dans C# .net en cours d'exécution sur un serveur Web externe.Dans ce que je suis en train de générer et enregistrer le mot doc sur le serveur (sans l'ouvrir). Il s'exécute des amendes sur ma machine locale car j'ai des mots installés sur ma machine mais sur le serveur il montre une erreur lors de l'utilisation de MyApplication Class. Je comprends qu'il n'est pas possible d'installer un mot sur le serveur. En ce moment je référence l'assemblage de word.interopp dans mon application. Existe-t-il une meilleure façon de résoudre le problème?Création et enregistrement de document Word sur le serveur

Merci et salutations

Vickey Y.

+3

OpenXML est-il une option pour vous? Ensuite, vous pouvez jeter un oeil à l'OpenXML SDK pour la création de documents. –

Répondre

2

le word.interop utilise une instance de mot pour générer et enregistrer les documents. Même s'il n'affiche pas l'interface utilisateur, le processus de WINWORD sera en cours d'exécution. En bref, vous avez besoin d'un mot installé sur le serveur pour utiliser word.interop. Lorsque nous avons fait cela, nous avons également rencontré des problèmes lorsque les serveurs devaient être compatibles avec les documents Word 2007, donc ce n'est pas facile de travailler avec Word. J'espère que vous allez résoudre le problème correctement :)

3

Si vous essayez d'utiliser Office Interop sans installer Office sur le serveur, il est évident qu'il échouera.

Pourriez-vous installer Word sur un serveur différent et d'exposer une sorte de service Web pour créer le document pour vous et rendre le contenu du fichier au serveur d'origine pour sauvegarder?

Vous pouvez utiliser des bibliothèques tierces pouvant générer le format Word approprié, mais je n'en connais aucune.

Quel format doit-il être? Est-ce un document compliqué? Pourriez-vous utiliser RTF?

3

Nous utilisons un outil tiers appelé Aspose.Word. Cela vous permet d'effectuer un tas de choses Word sans avoir à installer Word sur le serveur.

1

Oui, Word peut être exécuté sur le serveur. Toutefois, notez que l'ouverture du processus winword.exe à partir du service Web déclenchera probablement winword.exe en tant qu'utilisateur ASPNET. Certaines versions de MS Word ont affiché une forme modale de personnalisation lors de la première exécution, rendant impossible l'automatisation du processus d'utilisation de Word dans un environnement serveur. La solution rendait l'utilisateur ASPNET "login-enabled", se connectant au serveur en tant qu'utilisateur ASPNET, exécutant Word manuellement, fermant toutes les formes modales de première configuration, puis définissant l'utilisateur ASPNET à son état normal. Puisque ces fenêtres de configuration sont apparues seulement pendant la première exécution de winword (plus précisément: jusqu'à ce que la configuration soit approuvée par l'utilisateur), cela a fonctionné.

Remarque: l'utilisation de winword sur le serveur nécessite une investigation juridique. Pour autant que je sache, l'attitude des États membres vis-à-vis de ces solutions est plutôt négative, alors que certains systèmes juridiques trouvent tout à fait correct. Prenez également en considération le besoin de gérer les processus winword, et ... et en fait, c'est un peu un bidouillage grossier.

2

Je pense que vous pouvez faire quelque chose comme ça. Je devrais vous autoriser à ouvrir un document à partir du serveur.

protected void btnCreateWordBulletin_Click(object sender, EventArgs e) 
{ 
String a= Server.MapPath("/Solution/Templates/Sport/Sport.doc"); 
String b= Server.MapPath("/Solution/Templates/Sport/SportSave.doc"); 
CreateWordDocument(a, b); 
} 

protected void CreateWordDocument(object fileName, object saveAs) 
{ 
    //Set Missing Value parameter - used to represent 
    //a missing value when calling methods through interop 
    object missing = System.Reflection.Missing.Value; 
//Setup the Word.App class 
Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); 
Microsoft.Office.Interop.Word.Document aDoc = null; 
// Check to see that file exists 
if (System.IO.File.Exists((string)fileName)) 
{... Activating doc etc...}} 
0

OfficeWriter est une autre solution possible pour vous si vous avez besoin vrai DOC et DOCX (par opposition au format RTF ou un autre format):

http://www.officewriter.com

Questions connexes