首先poi中XWPFTable.addNewRowBetween(start, end);是不能实现插入行功能的,poi3.11版本未实现该功能,如下图:
主要思路如下:
插入行主要分2种情况,(1)在第一行插入或者最后一行插入。(2)在表格中间插入行。
第(1)种:如果在第一行上面插入一行或者最后一行下面插入一行,不需要考虑跨行情况。
如果在第一行下面插入一行或者最后一行上面插入一行,需要考虑跨行情况。
不管那一行插入都需要考虑跨列情况。
第(2)种:在中间插入,若当前行结束跨行,则上一行插入需要跨行,下一行插入不需跨行。
在中间插入,若当前行开始跨行,则下一行插入需要跨行,上一行插入不需跨行。
说下关键代码:
插入行可以使用insertNewTableRow,在下面插入一行时需参照下一行单元格是否跨行,按位置得到真实单元格代码如下:
/** * @Description:按位置得到单元格(考虑跨列合并情况) */ public XWPFTableCell getCellSizeWithMergeNum(XWPFTableRow row, int position) { List<XWPFTableCell> rowCellList = row.getTableCells(); int k = 0; for (int i = 0, len = rowCellList.size(); i < len; i++) { CTTc ctTc = rowCellList.get(i).getCTTc(); if (ctTc.isSetTcPr()) { CTTcPr tcPr = ctTc.getTcPr(); if (tcPr.isSetGridSpan()) { CTDecimalNumber gridSpan = tcPr.getGridSpan(); k += gridSpan.getVal().intValue() - 1; } } if (k >= position) { return rowCellList.get(i); } k++; } if (position < rowCellList.size()) { return rowCellList.get(position); } return null; }
其他部分自己实现了。
全文完。
相关推荐
应公司业务要求,需要在world文档中生成表格,最开始同事使用的freemarker操作xml标签可以实现world中插入表格, 但是每次修改模板需要改xml文件,几万行中去找对应的标签然后修改,容易找错位置并且电脑非常卡,相当麻烦;...
java使用poi操作.doc word模板替换,循环插入表格
Java Poi流根据Word模板插入相应的文本、表格和图片,并生成新的Word报告。文档提供相应的jar包和Word模板文件,表格支持动态添加数据,插入图片支持多种格式!
Java Poi流根据Word模板插入相应的文本、表格和图片,并生成新的Word报告。文档提供相应的jar包和Word模板文件,表格支持动态添加数据,插入图片支持多种格式!
Apache poi 根据word模板生成word报表 替换 循环列表 图片,代码调试过了,修改相应的图片位置,word模板路径即可运行
完美市县了DOCX格式的模板文字替换与插入浮于文字上方的图片。
通过POI可实现根据word模板替换文中或者表格的关键字(包括给定表头动态追加表格)。业务需求我是在模板中直接插入图片(例如衬于文字下方),所有代码中没有插入图片代码。
poi 将echar报表生成到word table表格中,类似与word文档中的生成图片,对于导出 word文档的报表是个不错的实例
通过POI将图片插入word文档中,写文字就简单了自己摸索
POI-TL合并多个Word文档
java poi 填充word(合并单元格,添加图片,设置字号)(csdn)————程序
java实现word表格指定位置盖章,并且设置印章悬浮于文字之上,达到跟用实体印章在A4纸上盖章一样的效果
poi写word工具类,包括添加标题,插入表格,合并单元格,插入图片,自动生成目录;代码见 https://blog.csdn.net/zheng_chang_wei/article/details/89448055
java实现word表格指定位置盖章,并且设置章悬浮于文字之上,达到跟用实体章在A4纸上盖章一样的效果
poi操作word文档,更新word内容,表格,插入图片等,支持跨平台
poi操作word例子代码,可插入图片。插入表格,插入段落插入标题
Java读取Word中的表格(Excel),并导出文件为Excel
来自官方网站,包括利用POI插入表格、插入图片、插入段落、更新嵌入的工作表四个例子。 也可在此下载: http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/
网络上的根据模板填充Word我都看过一些, 它们的功能在数据换行的时候用的是run对象的.addCarriageReturn()方法,或者是直接用\n实现换行。这些都不符合我的需求, 因为我要的是分段,而不是换行。换行的word导致另一...