Je suis en train de créer environ 600 rapports dans Microsoft Office Word. Les documents sont remplis avec des données provenant d'une base de données et des images trouvées sur un lecteur local. J'ai compris, que je pourrais créer un projet Word Template dans Visual Studio 2010, et programmer le modèle, de sorte que lorsque vous entrez une seule valeur (numéro d'identification), il remplit automatiquement le document entier.Comment créer des documents Word par programme à partir d'un modèle
Je suis assez confiant que c'est possible. le seul problème est. Comment parcourir toutes les entrées de la base de données, ouvrir un nouveau document basé sur le modèle et définir la valeur d'id? L'application est supposée ne s'exécuter qu'une seule fois, générant les rapports, et elle n'a pas besoin d'être rapide. Il doit juste être facile à développer.
Le problème ici est qu'il semble que l'objet DocumentBase n'est pas accessible en dehors du projet Word. Le substitut Microsoft.Office.Interop.Word.Document n'a pas de fonctionnalité comme SelectContentControlsByTitle qui me permet de trouver et de définir mes ContentControls. Et c'est exactement ce que j'ai besoin de faire ..
Voici à quoi ressemble mon code maintenant pour insérer le texte dans mon champ: Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Add(@"C:\..\test.dotx");
foreach (Word.ContentControl cc in doc.SelectContentControlsByTitle("MyCCTitle"))
{
cc.Range.Text += "1234";
}
doc.SaveAs(FileName: @"c:\temp\test.docx");
Puis un eventhandler sur mon modèle sur BeforeSave remplit le document sur la base du texte objet intitulé MyCCTitle.
Enfin, j'ai découvert que c'était en fait la voie à suivre .. Mais il y a beaucoup de choses dont vous devez être conscient. Tout d'abord, vous devez ajouter une référence au composant nommé office et vous devez faire en sorte que vos assemblys soient la bonne version, sinon vous n'aurez pas accès aux méthodes et aux objets corrects. –