2010-05-10 14 views
1

J'ai besoin d'un moyen de générer un document Word (à partir d'un modèle ou de quelque chose) et d'insérer une image à un endroit spécifique. Est-ce que quelqu'un a des indications sur la meilleure façon de faire cela?Créer un document Word et ajouter une image à partir de l'application .NET

J'ai travaillé sur un projet qui utilisait Office Automation dans .NET 1.1 il y a quelques années, et c'était vraiment indiciblement médiocre. Je suppose que OA a été amélioré ou dépassé par une meilleure solution, mais je ne trouve pas beaucoup de conseils sur google.

Modifier pour clarifier les choses, ce sera en cours d'exécution sur un serveur Web ou sharepoint

+1

S'il vous plaît voir http://stackoverflow.com/questions/10412/how-can-a-word-document-be-created-in-c – Avitus

+0

Pour amplifier le commentaire de @Avitus un peu - ce que vous voulez faire est générer un document au format .docx, pas d'automatisation juste des bibliothèques .NET de sorte que vous pouvez exécuter sur une boîte Windows appropriée (ie un serveur) sans dépendances (au-delà du cadre .NET approprié) – Murph

Répondre

2

Alternativement, et si vous n'avez pas besoin de générer des documents Word qui fonctionneront avec les versions antérieures à Word 2007, vous pouvez utiliser le OpenXML SDK pour créer votre document Word. Tout est code géré et beaucoup plus facile à mon avis d'utiliser que OA.

+0

merci, n'avait pas entendu parler d'OpenXML. – fearofawhackplanet

0

Après la ligne ajouterait l'image au document Word.

wordDoc.InlineShapes.AddPicture(filePath, ref link, ref save, ref range); 

Ici, le lien doit être false et enregistrer doit être vrai. La plage doit être l'emplacement où vous devez ajouter une image.

This lien devrait aider à faire face à l'Interop.

2

Ayant fait quelque chose de très similaire, je déconseille. Office Automation dans un environnement de serveur est buggé. En outre, COM Interop requiert un utilisateur interactif, c'est-à-dire qu'il n'y a pas de mode "sans tête".

Utilisez OpenXML comme suggéré par Gimly, ce serait une approche plus propre.