Comment puis-je utiliser des formats prédéfinis dans DOCX avec POI?
Je suis de la création d'un docx générateur avec POI et souhaitez utiliser des formats prédéfinis.
Mot comprend plusieurs formats comme Titre, Titre 1..10 etc. Ces formats sont prédéfinis dans chaque DOCX vous créer avec Word.
Je tiens à les utiliser dans mon docx générateur. J'ai essayé ce qui suit, mais le format n'a pas été appliquée:
paragraph = document.createParagraph();
lastParagraph.setStyle("Heading1");
J'ai aussi essayé le "titre 1", "en-tête 1" et "en-tête 1" que le style, mais aucun d'entre eux travaillaient.
Le La documentation de l'API ne pas afficher les détails.
J'ai analysé un fichier docx créé avec Word 2007, et il a "en-tête 1" serait correct. Malheureusement, le style n'est pas défini dans le docx. Dois-je créer ce style manuellement?
Quelqu'un peut-il m'indiquer la bonne solution?
OriginalL'auteur guerda | 2010-04-15
Vous devez vous connecter pour publier un commentaire.
C'est très simple: Utiliser un "modèle" de fichier docx.
XWPFDocument
Voici le code:
Le modèle contient tous les styles et, par conséquent, ils peuvent référencé via
setStyle("Heading1");
.Merci, Il a travaillé @guerda
Vous avez raison, à moins d'ajouter des styles de modèle, de ne pas obtenir les styles. merci. Il m'a beaucoup aidé et sauvé beaucoup de temps
J'ai peut-être pas pleinement conscients. mais qu'est-ce que
lastParagraph
signifie ici?Wow, 6 ans code et personne n'a remarqué l'erreur! Bien sûr, je voulais dire
paragraph
. Merci pour l'astuce!OriginalL'auteur guerda
Si vous sont généralement intéressés à la création d'un style qui est reconnu comme un titre de niveau 1 (par exemple, pour une utilisation dans un MS-Word généré TOC) et peut être consulté dans les formats Word bar, il peut être fait comme ceci:
Oui, ce style s'afficher dans la styles.xml.
(Je sais: Ce n'est pas une réponse directe à votre question, mais comme je n'ai pas trouvé cette info sur internet sous une forme utilisable, je vais le poster ici)
Alors que j'ai actuellement ne peuvent pas regarder cela dans le logiciel plus, j'ai fait une recherche rapide. Le POI javadoc n'ont pas de référence à CT style, hélas ( poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/... ), mais le bureau ouvrir le site a quelques pointeurs: wiki.openoffice.org/wiki/Cell_Style_in_Xls_module
Il semble que si vous pouvez définir des polices sur XWPFStyles: poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/...
J'ai trouvé ça: stackoverflow.com/a/36649411/461499
OriginalL'auteur RobertG
Vous pouvez créer un modèle word (il suffit d'utiliser le bouton Enregistrer sous... fonctionnalité dans Word).
première option
Le modèle contient maintenant un certain nombre d'autres fichiers XML dans \word dossier:
- styles.xml
- stylesWithEffects.xml
- webSettings.xml
- fontTable.xml
et un
- \dossier du thème
Si vous copiez ces fichiers dans votre original POI fichier généré, alors vous pouvez faire référence à des styles de données dans le styles.xml fichier.
Vous pouvez manipuler votre fichier d'origine comme un fichier ZIP, ce ne devrait pas être trop d'effort.
deuxième option
Copie des styles dans le code à partir du modèle de votre document:
Sur le côté positif, vous pouvez manipuler vos styles séparément directement à l'aide de Word et de les enregistrer en arrière pour le modèle de fichier.
OriginalL'auteur Drejc
Oui, vous devez le faire manuellement. Docx spec dit que styles.xml qui contient des informations sur les styles est facultatif. Donc, je suis presque sûr que PI ne crée pas du tout si vous ne le faites pas explicitement. Vous pouvez le vérifier: il suffit de dézipper le fichier docx et regarder si ce fichier est-il ou non (yourfile.docx/word/styles.xml).
Donc, ce que vous devriez faire (en docx termes, je ne sais pas comment c'est mis en œuvre en PVE):
1) créer styles.xml et d'ajouter nécessaire styles de
2) de créer la relation qui relie document.xml et styles.xml (je pense que POI devrait le faire automatiquement)
3) utiliser les styles id de l'intérieur document.xml pour se connecter en béton partie du texte (Exécuter en docx) avec du béton de style.
OriginalL'auteur Roman