接到的需求是在模板表格的指定位置再插入表格。比如在模板的${proTable}
处插入表格。
依赖的包
1 | <dependency> |
插入表格
由于是在表格里的指定地方插入表格,所以要遍历表格的每个单元格,查找到要插入点的占位符。
1 | // 处理表 |
1 | // 在key处插入表格 |
1 | // 插入并设置表格的值 |
由于创建的新表格没有属性,比如设置边框样式,行高列宽等。POI给出了方法去设置这些属性。POI处理文档都是解析成xml格式。这里是截取部分,比如:
1 | <w:tbl> |
所以,如果要为新的表格设置属性,就要去操作这些节点,得到这个节点后就可以对其添加设置自己所需属性。其中:
CTTbl
就对应上面的<w:tbl></w:tbl>
,得到表格属性CTRow
就对应上面的<w:tr></w:tr>
,得到行属性CTTc
就对应上面的<w:tc></w:tc>
,得到列属性CTP
就对应上面的<w:p></w:p>
,得到段落属性CTR
就对应上面的<w:r></w:r>
,得到run属性,操作文本
1 | // 设置表格边框 |
1 | // 添加单元格属性 |
把返回的XWPFDocument写入到对应的流中。
1 | FileOutputStream fopts = new FileOutputStream("E://andy.docx"); |
参考资料
http://alexgl.iteye.com/blog/2326665
http://elim.iteye.com/blog/2049110
https://blog.csdn.net/qq_32918555/article/details/77606215
https://blog.csdn.net/ztt_1119/article/details/69390807