import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
public class MultipleRichTextWordDocument {
public static void main(String[] args) throws Exception {
// 创建文档对象
XWPFDocument document = new XWPFDocument();
// 添加标题
XWPFParagraph titleParagraph = document.createParagraph();
titleParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun titleRun = titleParagraph.createRun();
titleRun.setText("多个富文本生成Word文档");
titleRun.setColor("000000");
titleRun.setFontSize(20);
titleRun.setBold(true);
titleRun.setUnderline(UnderlinePatterns.THICK);
// 添加章节
List<String> richTextList = getMultipleRichTextList();
for (int i = 0; i < richTextList.size(); i++) {
String richText = richTextList.get(i);
XWPFParagraph paragraph = document.createParagraph();
paragraph.setIndentationFirstLine(560);
paragraph.setSpacingBefore(20);
paragraph.setSpacingAfter(20);
CTP ctp = paragraph.getCTP();
CTTc tc = ctp.addNewTc();
CTBookmark bookmark = tc.addNewBookmarkStart();
bookmark.setName("Chapter" + (i + 1));
bookmark.setHidden(true);
tc.addNewP().addNewPPr().addNewPStyle().setVal("Heading1");
CTR ctRun = tc.getPArray(0).addNewR();
ctRun.addNewT().setStringValue(richText);
XWPFParagraph blankParagraph = document.createParagraph();
blankParagraph.setSpacingBefore(20);
}
// 保存文档
FileOutputStream out = new FileOutputStream("multiple_rich_text_word_document.docx");
document.write(out);
out.close();
document.close();
}
private static List<String> getMultipleRichTextList() {
List<String> richTextList = new ArrayList<>();
richTextList.add("第一章 富文本1");
richTextList.add("第二章 富文本2");
richTextList.add("第三章 富文本3");
return richTextList;
}
}
在此示例中,我们首先创建了一个新的Word文档,并添加了一个标题。然后我们使用一个循环来遍历多个富文本,并依次生成每个章节。对于每个章节,我们使用document.createParagraph()
方法创建一个新的段落,并向该段落中添加富文本内容。最后,我们将文档保存到本地文件系统中。
需要注意的是,在此示例中,我们使用了Word文档中的书签来索引章节。这可以帮助用户在需要时快速导航到指定的章节。