2010-02-03 4 views
0

Je ne suis pas en mesure de mettre à jour la valeur d'une propriété personnalisée dans un document Word en utilisant java.Mise à jour de valeurs de propriétés personnalisées dans doc doc en utilisant java

J'ai un document Word qui contient une propriété personnalisée avec la valeur 'stack'. En utilisant Java, je veux changer cette valeur pour 'déborder'. J'ai utilisé deux approches.

1) Utilisation d'Apache POI

Je mis les org.apache.poi.hpsf.CustomProperties dans org.apache.poi.hpsf.DocumentSummaryInformation et écrit à POIFSFileSystem.

Il met à jour la valeur dans la table customproperties de Word. Mais ne met pas à jour la valeur pour cette propriété respective dans le document. Une fois le document ouvert, je dois actualiser manuellement le document pour mettre cette valeur à jour.

2) Analyser le document char par caractère et utiliser les codes de champ DC3, DC4 et NAK pour identifier l'emplacement des propriétés personnalisées. Remplacez la valeur existante par la nouvelle valeur.

Maintenant, le document généré contient les nouvelles valeurs. Mais le problème ici est que si la longueur de l'ancienne valeur et de la nouvelle valeur est différente, le document est corrompu. Je me suis assuré que la logique est assez bonne.

Toute aide serait appréciée.

Répondre

1

Pour mettre à jour l'approche que je pris pour résoudre le problème:

En utilisant Office 2007 (docx) document comme modèle est devenu plus facile. Ce n'est rien d'autre qu'un document zip. Vous pouvez l'ouvrir en utilisant votre application zip (winzip/7zip) et vous pouvez trouver de nombreux fichiers xml à l'intérieur. document.xml contient le contenu, styles.xml contient des informations de mise en forme et ainsi de suite.

Lors de l'exécution, j'ai décompressé le document et analysé le document.xml, puis utilisé dom et mis à jour avec du contenu dynamique. Les propriétés personnalisées sont disponibles dans un fichier xml distinct.

Pour les utilisateurs 2003, ils doivent préparer le modèle à l'aide de l'application Word et enregistrer le document au format XML, puis le fournir en entrée.

Aucune utilisation d'apache-poi maintenant.