IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Créer un fichier .doc coté serveur [Fait]


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Par défaut Créer un fichier .doc coté serveur
    Bonjour,

    J'ai une application silverlight reposant sur une page aspx. Je ne poste pas mon problème dans la partie Silverlight du forum car je pense que le problème vient du code aspx.
    En passant par un web service j'envoi une variable string vers ma page aspx afin que le serveur crée un .doc pour ensuite le proposer en téléchargement au client.
    Pour ce faire, coté serveur, je cherche à ouvrir Word, un nouveau document, envoyer mon texte, sauvegarder le document puis fermer Word. Hélas je n’arrive pas a passer le stade où j’ouvre Word.

    Lors de mes tests en local tout cela fonctionnait correctement.
    Je vous mets les parties de codes importants puis le résultat du try catch dans ma méthode.

    Mon appel au web service de l'application silverlight (au cas où)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Save_textClient client = null;
     
    void btTest_Click(object sender, RoutedEventArgs e)
            {
                client = new Save_textClient();
                client.SaveToWordCompleted += new EventHandler<SaveToWordCompletedEventArgs>(client_SaveToWordCompleted);
                client.SaveToWordAsync(tbxText.Text);
            }
     
            void client_SaveToWordCompleted(object sender, SaveToWordCompletedEventArgs e)
            {
                tbxReponse.Text = e.Result.ToString();
                client.CloseAsync();
                client = null;
            }
    Le webservice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Save_text : ISave_text
        {
            public string SaveToWord(string text)
            {
                return new Mtd_Word().Use_Word(text);
            }
        }
    et la méthode sensait créer le .doc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     public class Mtd_Word
        {
            public Microsoft.Office.Interop.Word.Application wrdApp = null;
     
            public string Use_Word(string text)
            {
                string result = "Tout fonctionne";
     
                try
                {
                    object o = System.Reflection.Missing.Value;
                    object oTrue = true;
     
                    wrdApp = new Microsoft.Office.Interop.Word.Application();
                    wrdApp.Visible = true;
                    wrdApp.Activate();
     
                    Microsoft.Office.Interop.Word.Document wrdDoc;
                    wrdDoc = wrdApp.Documents.Add(ref o, ref o, ref o, ref oTrue);
     
                    Microsoft.Office.Interop.Word.Range wrdRange = null;
                    object startPos = 0;
                    object endPos = 0;
                    wrdRange = wrdDoc.Range(ref startPos, ref endPos);
                    wrdRange.Text = text;
     
                    object nomFichier = @"D:\Application\Site DEMO\Docs\test_wrd.doc";
                    wrdDoc.SaveAs
                        (
                            ref nomFichier,
                            ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o,
                            ref o, ref o, ref o, ref o, ref o, ref o, ref o
                        );
     
                    //wrdDoc.Close(ref o, ref o, ref o);
                    //wrdDoc = null;
                    //wrdApp.Quit(ref o, ref o, ref o);
                    //wrdApp = null;
     
                }
                catch (Exception e)
                {
                    result = e.ToString();
                }
     
                return result;
            }
        }
    enfin le résultat du try catch :
    System.Runtime.InteropServices.COMException (0x80080005): La récupération de la fabrique de classe COM pour le composant avec le CLSID {000209FF-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante*: 80080005.
    à Test_Word.Web.Publipostage.Mtd_Word.Use_Word(String text) dans C:\Documents and Settings\DEV\Mes documents\Visual Studio 2008\Projects\Test\Test_Word\Test_Word.Web\Publipostage\Mtd_Word.cs:ligne 21


    La ligne 21 correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wrdApp = new Microsoft.Office.Interop.Word.Application();
    de ma classe Mtd_Word

    J'ai bien publié le site sur le serveur, mais bizarement comme vous pouvez le voir il y a encore une référence au dossier du projet de ma machine de développement. Je ne sais l'expliquer étant donner que je n'y fait référence nul part dans mon code.

    Merci de me consacrer un peu de votre temps

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Il semblerait que tu ne peux pas créer de fichier doc en utilisant ce composant si Word n'est pas installé sur le serveur: http://www.developpez.net/forums/d70...arche-serveur/

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Par défaut
    Word est installé sur le serveur.
    J'ai essayé avec la version 2007 et la version 2003, le même message apparait.
    Word a-t-il besoin d’être installé dans le répertoire par défaut ?
    Y-aurait-il un moyen de spécifier le chemin vers l’application ?

  4. #4
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 174
    Par défaut
    As tu regardé dans les COM+ si NETWORK SERVICE pouvait lancer Word ?

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/02/2010, 17h35
  2. [débutant java web] faire exécuter des fichiers .jar coté serveur
    Par Balbuzard dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 01/09/2008, 18h16
  3. Génération de document au format DOC coté serveur
    Par Righetto Dominique dans le forum Framework .NET
    Réponses: 3
    Dernier message: 14/03/2008, 10h36
  4. [Stratégie] Créer un fichier sur un serveur distant
    Par krachik dans le forum Général Java
    Réponses: 12
    Dernier message: 06/12/2007, 10h16
  5. [XML] Créer un fichier sur le serveur avec le contenu d'une requête POST
    Par kingmandrax dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 27/10/2006, 00h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo