★★★
POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XWPFDocument。
1、正文段落:一个文档包含多个段落Paragraph,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元。
(Run:代表具有相同属性的一段文本,可以包含多个图片)
2、正文表格:一个文档包含多个表格Table,一个表格包含多行TableRow,一行包含多列(单元格TableCell)
,每一格的内容相当于一个完整的文档。★注:表格的一格相当于一个完整的docx文档,只是没有页眉和页脚。里面可以有表格,
使用xwpfTableCell.getTables()获取在poi中段落和表格是完全分开的,如果在两个段落中有一个表格,
在poi中是没办法确定表格在段落中间的。
3、页眉:一个文档可以有多个页眉,页眉里面可以包含段落和表格
4、页脚:页脚和页眉基本类似,可以获取表示页数的角标
XWPFDocument代表一个docx文档,其可以用来读docx文档,也可以用来写docx文档。
XWPFParagraph代表一个段落,由多个XWPFRun组成
XWPFRun代表具有同样风格的一段文本
XWPFTable代表一个表格
XWPFTableRow代表表格的一行
XWPFTableCell代表表格的一个单元格
★Paragraph、Run和Table都继承自Range。
直接调用XWPFRun的setText()方法设置文本时,在底层会重新创建一个XWPFRun,把文本附加在当前文本后面,
所以我们不能直接设值,需要先删除当前run,然后再自己手动插入一个新的run。
设置文本的大小、字体、是否加粗、颜色等
XWPFRun r1 = p1.createRun();// p1.createRun()将一个新运行追加到这一段
Text text = (Text) wordValue.getList().get(index).get("text");
System.out.println(text.getValue());
r1.setText(text.getValue());
r1.setBold(true);// ---"加黑加粗"
r1.setFontSize(14);// ---字体大小
r1.setTextPosition(20);// 间距
设置表格的位置、内容table、row、cell
table.addNewCol();给表格增加新的一列
table.createRow();创建一行
row.setHeight(int height);设置单元格的高度
cell.getText();返回单元格中文本内容
cell.setColor(String color);设置单元格颜色
cell.setText(String value);设置单元格的值