java POI 对word文档中table中的cell进行合并的方法

请直接看代码然后复制粘贴

//创建一个2X5的表格
XWPFTable table = doc.createTable(2, 5);

//使用第0行
List tableName = table.getRow(0).getTableCells();
tableName.get(0).setText("表名"); /为第0行第0列设置内容
//将第一列到第四列合并
for (int i = 1; i <= 4; i++) {
//对单元格进行合并的时候,要标志单元格是否为起点,或者是否为继续合并
    if (i == 1)
        tableName.get(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);//这是起点
    else
        tableName.get(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);//继续合并
}
tableName.get(1).setText("这是合并之后的表格");//为第1行1到4合并之后的单元格设置内容

//使用第1行, 有五个单元格
List heads = table.getRow(1).getTableCells();
for (int i = 0; i < 5; i++) {
    heads.get(i).setText("" + i);
}

以上代码会生成如下形式的表格

表名 这是合并之后的表格
0 1 2 3 4

同样也可以使用如下方法达到合并的效果(至少看起来是), 将第0行第1个单元格向后延伸4个表格, 但测试效果是将后面3个单元格挤到了边缘外

tableName.get(1).getCTTc().addNewTcPr();
tableName.get(1).getCTTc().getTcPr().addNewGridSpan();
tableName.get(2).getCTTc().getTcPr().getGridSpan().setVal(BigInteger.valueOf(2L));

看上去就是这样的

表名 这是合并之后的表格
0 1 2 3 4

你可能感兴趣的:(JAVA,poi,文档生成)