2010-08-06 19 views
3

Je dois joindre un document XML spécifique à un document Word pour que les éléments apparaissent aux bons endroits. C'est ce que je peux faire avec OpenXML SDK. Le truc c'est que je veux aussi être capable de définir les contrôles de contenu déjà limités dans une sorte de modèle afin que d'autres personnes puissent créer le vrai modèle de document auquel sera attaché le fichier .xml. Ok pas sûr que les gens vont se défaire de ce que je veux dire, donc je vais vous expliquer plus loin.OpenXML: Création de contrôles de contenu réutilisables avec liaison

Il peut y avoir de nombreux modèles de document différents qui utiliseront les mêmes données XML et donc les mêmes contrôles de contenu. C'est à quelqu'un d'autre de créer le document.

Scénario: Un mec qui n'est pas un programmeur doit créer un nouveau formulaire pour les informations habituelles en raison de quelques changements (nouvelle disposition ou quelque chose). Cela n'a rien à voir avec l'information XML, qui reste la même.

Une solution optimale pour "certains mec" serait de créer le document dans Word et faites glisser les contrôles de contenu en place (ou une solution similaire). Ensuite, lorsque le XML est ajouté au document, il n'y a pas de problème car les contrôles de contenu sont pré-liés.

Maintenant, il y a quelques points ici:

1) peuvent être des contrôles de contenu pré-binded? S'il n'y a pas de XML sur le chemin, ne restera-t-il pas vide sans problèmes?

2) Est-ce que les Contrôles de Contenu obligatoires pour les CustomXML fonctionneront encore dans les futures versions de Word à cause du procès i4i?

3) Y a-t-il peut-être mieux une autre solution optimale?

Merci d'avance.

EDIT:

Pour être plus clair. Je ne voulais pas créer de contrôles de contenu qui auraient un nom pour les identifier et une base de données xpath. Cependant, à ce moment, il n'y a rien sur le chemin.

Un autre utilisateur entre et crée un formulaire, décide de la mise en page etc., puis ajoute les contrôles de contenu aux endroits où il souhaite que l'information soit.

Plus tard sur l'information pour l'article X est demandé en utilisant le nouveau formulaire. Donc, une copie de ce formulaire sera prise et le CustomXML sera ajouté dans le fichier Docx. Maintenant, parce que le shchema XML était connu à l'avance et utilisé pour décider des chemins pour les CC, ces données XML seront liées aux contrôles de contenu.

+0

Juste pour que je vous comprenne clairement, vous voulez qu'un utilisateur ajoute un CC dans le client Word et quand ils le font, il doit être lié à certaines données quand ils l'ont ajouté, correct? –

+0

@Otaku Je ne voulais pas définir le CC à l'avance pour pouvoir l'ajouter à son document Word (en utilisant le mot client) afin que le document Word soit prêt à accepter le CustomXML. –

Répondre

2

Une excellente option consisterait à utiliser VSTO (Visual Studio for Office) pour créer un ensemble de modèles de document auxquels votre code de pré-reliure est associé. Ces deux articles offrent un bon départ dans la recherche dans ce type d'une solution:

Il y a deux fils qui discutent des détails de cette: 1 et 2.

L'un des avantages de l'utilisation de VSTO est que vous pouvez accrocher le Content Control events: Content Control Event Model in Word 2007.

Si VSTO n'est pas une option, vous pouvez toujours regarder Add Custom XML Parts to Documents Without Starting Microsoft Office.

+0

Je n'ai actuellement pas VSTO, pense que j'ai besoin de la version professionnelle de VS pour cela. Mais peut-être que j'en prendrai un. Je n'ai pas regardé l'autre article, mais je sais comment attacher le CustomXML juste n'aime pas la plupart des solutions de liaison après l'ajout de cause, je ne peux pas faire confiance aux concepteurs de documents pour ajouter le CC a raison. Va vérifier cela et ensuite vous faire savoir et donner une bonne réponse si tout va bien. –

+0

Cool. J'ai ajouté un ensemble de liens supplémentaires sur les événements CC de VSTO. Cela peut être utile pour accrocher l'insertion d'utilisateur de CC et valider. –

+1

BTW - En général, les utilisateurs finaux ne doivent pas insérer de CC. Ils insèrent plutôt des Building Blocks (qui peuvent contenir des CC) - Insert> QuickParts. De cette façon, vous ne les avez pas avec la barre d'outils de développement. –

1

Cela devrait être très simple. Les contrôles personnalisés ne sont pas affectés par le procès i4i et vous pouvez les nommer en utilisant la propriété tag dans chaque contrôle (avertissement - il est limité à 64 caractères).

+0

J'ai utilisé les contrôles de contenu (j'imagine que c'est ce que vous voulez dire) et les ai ajoutés en tant que QuickParts dans un modèle pour faciliter leur création. Le plus gros problème était de répéter les éléments mais je les ai ajoutés en tant que tables et répété plusieurs fois la dernière ligne. –

+0

Désolé, oui - contrôles de contenu. Content que cela fonctionne pour vous. –