我想在XWPFDocument中将word的自动格式化功能与Apache-POI一起使用。
通过自动格式化,我的意思是,如果您输入例如“ ---”,然后按回车键,将在word文档的页面上绘制一条水平线。
我想在标题中使用它。
我尝试了
XWPFHeader header = doc.createHeader(HeaderFooterType.FIRST);
paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.LEFT);
run = paragraph.createRun();
run.setText("---\r");
或
run.setText("---\r\n");
或
run.setText("---");
run.addCarriageReturn();
这些都不起作用。
是否可以在POI中使用自动格式化功能?
关于, 迈克
我正在使用POI 4.0.0,顺便说一句...
答案 0 :(得分:2)
自动套用格式是Word
的GUI的功能。但是apache poi
正在创建存储在*.docx
文件中的内容。自动格式用段落的底部边框线替换了“ ---” Enter 之后,仅该段落的底部边框线存储在文件中。
所以:
import java.io.*;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.wp.usermodel.HeaderFooterType;
public class CreateWordHeader {
public static void main(String[] args) throws Exception {
XWPFDocument doc = new XWPFDocument();
// the body content
XWPFParagraph paragraph = doc.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("The Body...");
// create header
XWPFHeader header = doc.createHeader(HeaderFooterType.FIRST);
paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.LEFT);
run = paragraph.createRun();
run.setText("First Line in Header...");
// bottom border line of the paragraph = what Autoformat creates after "---"[Enter]
paragraph.setBorderBottom(Borders.SINGLE);
paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.LEFT);
run = paragraph.createRun();
run.setText("Next Line in Header...");
FileOutputStream out = new FileOutputStream("CreateWordHeader.docx");
doc.write(out);
doc.close();
out.close();
}
}