2012-08-29 2 views
3

Création d'un complément VSTO Office 2007.Publication en série d'ActiveDocument en cours à partir du complément Office 2007

Je dois activer ou trouver une solution où je peux enregistrer sur un webservice avec un byte[] au lieu d'un disque dur.

Alors, je ouvrir le document en allant sur un site Web et en cliquant sur une URL, cliquez qui me envoyer un document Word, et je sélectionnez Ouvrir avec MS Word 2007.

Le document ouvert, et si je vérifier les données que j'ai:

ActiveDocument.Fullname = http: // [servername ou IP]/[certains dossier iis] /file.asp?id=353 & type = doc`

donc je pense que tout cela est en mémoire depuis que je ne pas avoir le fichier original ou le fichier temporaire s'il existe.

Je n'ai aucun problème avec un disque, même si le document est ouvert. Comment puis-je faire un byte[] à partir d'un courant ActiveDocument?

J'ai trouvé beaucoup de réponses, indiquant que cela ne peut pas être fait. Mais j'ai aussi un client qui a un ancien add-in qui fait le byte[] à partir d'un ActiveDocument actuel.

Quelqu'un peut-il m'aider?

Répondre

2

Vous pouvez convertir ActiveDocument au COM Interop IPersistFile pour enregistrer une copie des documents de les octets ouverts à un chemin temporaire local, puis les relire pour envoyer à votre webservice. Dans Office, vous ne pouvez pas lire les octets du document actif sans d'abord enregistrer sur le disque. Voir this MSDN blog for reference.

COM.IPersistFile compoundDocument = Application.ActiveDocument as COM.IPersistFile; 
compoundDocument.Save(filePath, false); 
byte[] content = File.ReadAllBytes(filePath); 
+0

J'ai implémenté votre code. Et cela fonctionne :) mais ActiveDocument contient la propriété et BuildInProperties. –

Questions connexes