Apache POI XWPFライブラリを使用して、Wordのdocxファイルでレポートを作成しようとしています。Apache POI:ワードドキュメントの番号付きリストの番号付けを再開するにはどうすればよいですか?
私のアプローチは、既存のWord文書をスタイルテンプレートとして使用することです。テンプレートの中で私は "SRINumberList"という名前のスタイルを定義しました。
ので、テンプレートをロードして、ヘッダーまたはフッターにないすべて削除するには:今、私の文書内の番号付きリストが含まれているいくつかの異なるセクションがある
protected void createDocFromTemplate() {
try {
document = new XWPFDocument(this.getClass().getResourceAsStream(styleTemplate));
int pos = document.getBodyElements().size()-1;
while (pos >= 0) {
IBodyElement element = document.getBodyElements().get(pos);
if (!EnumSet.of(BodyType.HEADER, BodyType.FOOTER).contains(element.getPartType())) {
boolean success = document.removeBodyElement(pos);
logger.log(Level.INFO, "Removed body element "+pos+": "+success);
}
pos--;
}
} catch (IOException e) {
logger.log(Level.WARNING, "Not able to load style template", e);
document = new XWPFDocument();
}
}
を。それぞれ1からこの付番再起動する必要があり、私はこれをやっている典型的な方法である:
if (itemStem.getItems().size() > 0) {
p = document.createParagraph();
p.setStyle(ParaStyle.StemAndItemTitle.styleId);
final BigInteger bulletNum = newBulletNumber();
run = p.createRun();
run.setText("Sub Items");
itemStem.getItems().stream().forEach(item -> {
XWPFParagraph p2 = document.createParagraph();
p2.setStyle(ParaStyle.NumberList.styleId);
XWPFRun run2 = p2.createRun();
run2.setText(item.getSubItemText());
});
p = document.createParagraph();
p.createRun();
}
だから、これは正しく番号形式が含まれているスタイルを適用されますが、単一の配列のみ(1があります...ただし、多くのリスト項目は文書内で終了します)。たとえば、次のように
Heading 1
1. item a
2. item b
3. item c
Heading 2
4. item a
5. item d
6. item g
しかし、私が欲しいのさ。だから、基本的に私は私が持っているスタイルが、文書内のさまざまなスポットに番号を再起動ページを使用する方法を把握しようとしている
Heading 1
1. item a
2. item b
3. item c
Heading 2
1. item a
2. item d
3. item g
。誰かがこれがどのように機能するかのサンプルを提供できますか?
これは近いです...確かに数字を再起動しますが、何らかのリストを再起動しません。つまり、アルファリストがある場合は、「a」で再起動します。 – Jim