Le remplissage de modèle Word champs avec C#
Actuellement, si je créer un Modèle de Document Word avec des champs, puis de les remplir à l'aide de C#, je ne suis semblable à ce...
object missing = Type.Missing;
Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Open("file.doc", ref missing, true);
Word.FormFields fields = doc.FormFields;
fields[2].Result = "foo"
fields[3].Result = "bar"
Est-il une meilleure façon de référencer les champs?
J'ai remarqué lors de la création du modèle, je peux ajouter un Titre et une Étiquette sur le terrain, mais je n'ai pas trouvé un moyen de faire référence à ces propriétés. Il serait agréable d'être en mesure de champs de nom et de la référence à eux directement, au lieu de comptage et de déterminer le champ dans lequel je suis.
OriginalL'auteur erosebe | 2014-10-16
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de formulaires hérités? Lorsque vous ajoutez un héritage champ de formulaire pour un doc Word, sous Propriétés > Paramètres de Champ, il y a un Signet qui est en fait le nom du champ. Par défaut, un héritage champ de texte aura un Signet de "Texte1", "Texte2", etc.
Donc en VBA:
Dans votre cas, il pourrait être (C#):
Ou vous pouvez simplement écrire une boucle qui parcourt la liste des champs et à la recherche d'un prénom (pseudo-VB):
Si vous êtes à l'aide du nouveau champ de formulaire de contrôle où vous pouvez définir un Tag et d'automatiser avec VSTO (C#):
Lire plus sur les Contrôles de Contenu ici.
Pas de problème! Vous m'avez donné assez de rep afin de voter pour les commentaires maintenant, donc merci pour ça.
Hey, juste pour le record, votre exemple de code a un type. L' (1) doit être [1]. Et c'est vraiment basé sur 1 au lieu de 0, ce qui est un peu bizarre.
J'ai mis à jour la réponse à clarifier, c'est l'un des très faibles différences entre VB et C#. VB est belle 🙂
OriginalL'auteur perry
Une bonne façon de le faire est de, à chaque endroit dans le modèle que vous voulez ajouter du texte plus tard, de placer un signet (Insertion -> Liens> Signet). Pour utiliser votre code, vous permettrait d'accéder à chaque signet par son nom, par exemple:
OriginalL'auteur helrich