POI-XWPF简介
一、简介
Apache POI是Microsoft文档的Java API,可以使用它创建或修改MS-Office文件。其中,XWPF有一个相当稳定的核心API,提供对.docx
文件主要部分的读写访问。
二、安装
pom.xml:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
三、核心类
1、文档
- Document
接口,它的实现类可以创建word文档。
- XWPFDocument
用来创建.docx
文件格式的MS-Word文档。
XWPFDocument document = new XWPFDocument();
FileOutputStream out = new FileOutputStream(new File("D:/hello.docx"));
document.write(out);
out.close();
2、段落
- XWPFParagraph
用于在Word文档中创建段落和将所有类型的元素添加到Word文档中。
XWPFParagraph paragraph = document.createParagraph();
- XWPFRun
用于向段落添加文本区域。
XWPFRun run = paragraph.createRun();
run.setText("Hello World.");
3、表格
- XWPFTable
用于将表格数据添加到word文档中。
XWPFTable table = document.createTable();
XWPFTableRow row1 = table.getRow(0);
row1.getCell(0).setText("1,1");
row1.addNewTableCell().setText("1,2");
row1.addNewTableCell().setText("1,3");
XWPFTableRow row2 = table.createRow();
row2.getCell(0).setText("2,1");
row2.getCell(1).setText("2,2");
row2.getCell(2).setText("2,3");
XWPFTableRow row3 = table.createRow();
row3.getCell(0).setText("3,1");
row3.getCell(1).setText("3,2");
row3.getCell(2).setText("3,3");
4、提取文本
- XWPFWordExtractor
一个基本的解析器类,用于从Word文档中提取简单文本。
XWPFWordExtractor extractor = new XWPFWordExtractor(document);
System.out.println(extractor.getText());
四、样例
1、Hello World
public static void main(String[] args) throws Exception {
//文档
try (XWPFDocument document = new XWPFDocument()){
//段落
XWPFParagraph paragraph = document.createParagraph();
//边框
paragraph.setBorderTop(Borders.DOT_DASH);
paragraph.setBorderBottom(Borders.DOT_DASH);
//对齐方式
paragraph.setAlignment(ParagraphAlignment.CENTER);
paragraph.setSpacingAfter(100);
XWPFRun runOne = paragraph.createRun();
//文字样式
runOne.setFontSize(20);
//段落内容
runOne.setText("Hello World.");
XWPFRun runTwo = paragraph.createRun();
runTwo.setBold(true);
runTwo.setText("Hello POI.");
XWPFTable table = document.createTable(3, 3);
//宽度100%
table.setWidth(100);
table.setWidthType(TableWidthType.PCT);
XWPFTableRow row1 = table.getRow(0);
row1.getCell(0).setText("1,1");
row1.getCell(1).setText("1,2");
row1.getCell(2).setText("1,3");
XWPFTableRow row2 = table.getRow(1);
row2.getCell(0).setText("2,1");
row2.getCell(1).setText("2,2");
row2.getCell(2).setText("2,3");
XWPFTableRow row3 = table.getRow(2);
row3.getCell(0).setText("3,1");
row3.getCell(1).setText("3,2");
row3.getCell(2).setText("3,3");
try (FileOutputStream out = new FileOutputStream(new File("G:/files/hello.docx"))) {
document.write(out);
}
}
}
运行后生成的Word文档内容:
2、提取简单文本
public static void main(String[] args) throws Exception {
try(XWPFDocument document = new XWPFDocument(new FileInputStream(new File("G:/files/hello.docx")))){
try(XWPFWordExtractor extractor = new XWPFWordExtractor(document)){
System.out.println(extractor.getText());
}
}
}
输出:
Hello World.Hello POI.
1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3