2011-08-05 6 views
2

Comment marquer un "point" (il peut s'agir d'une zone de texte ou d'un champ de texte) dans un document Word? J'ai essayé de mettre un contrôle de contenu de texte brut dans mon document, mais quand j'ai regardé le XML généré il n'y avait aucun "alias" pour ce contrôle en texte brut. Tout le code que j'ai vu pour en avoir un, a besoin d'un alias. Qu'est-ce que je fais mal? Et y a-t-il un autre moyen plus facile de "marquer" facilement un point dans un document et de récupérer le texte qui s'y trouve plus tard? (L'utilisateur entrera le texte ...)Marquer le point dans le document Word

+0

comment obtenez-vous le XML généré? en extrayant le '.zip' du' .docx'? – JMax

+0

@JMax J'utilise OpenXML SDK qui gère les détails de bas niveau. – KyleM

Répondre

0

Dans Visual Studio j'ai pu utiliser le concepteur pour définir les propriétés du contrôle de texte brut. Sur les propriétés il y a une propriété "tag" que j'ai définie au nom que je voulais pour mon tag. Ensuite, en utilisant cette méthode, j'ai pu trouver le contrôle plus tard:

WordprocessingDocument document = WordprocessingDocument.Open(file.OpenBinaryStream(), true); 

     var docPart = document.MainDocumentPart; 
     // Find the first content control whose Alias property 
     // matches the supplied name. 
     var sdts = docPart.Document.Descendants<Tag>(); 
     foreach (var sdt in sdts) 
     { 
      string value = (string)sdt.Val; 

      if (value.Equals(contentControlTag)) 
      { 
       oxe = sdt; 
       break; 
      } 
     } 

     return oxe; 
1

Typiquement, vous utilisez un signet. Vous pouvez marquer un endroit spécifique ou vous pouvez marquer une sélection (zone). Ils sont exactement ce que vous voulez et vous les trouverez extrêmement utiles.

Découvrez http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2006/10/09/719.aspx, il devrait vous aider à démarrer.

WordprocessingML

+0

En fait, j'ai réalisé en jouant avec le concepteur que je peux définir un "tag" et un "id" sur un contrôle de contenu de boîte de texte en clair. Maintenant, j'ai juste besoin de comprendre comment rechercher le contrôle en utilisant sa balise OU en utilisant son identifiant. – KyleM

+0

Un simple analyseur XML avec XPath ferait cela sans casser la sueur – Konrads

Questions connexes