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ù)
Le webservice
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; }
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 public class Save_text : ISave_text { public string SaveToWord(string text) { return new Mtd_Word().Use_Word(text); } }
enfin le résultat du try catch :
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; } }
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 à :
de ma classe Mtd_Word
Code : Sélectionner tout - Visualiser dans une fenêtre à part wrdApp = new Microsoft.Office.Interop.Word.Application();
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
Partager