使用Apache-POI进行Word自动格式化

时间:2018-09-21 09:42:24

标签: java apache-poi

我想在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,顺便说一句...

1 个答案:

答案 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();


 }
}