poi操作word中的表格之合并单元格

这工具类找了半天,记录下来以后可能用到

/** 
*   word跨列合并单元格
*   table 表单对象
*   row  合并行
*   fromCell 起始列
*   toCell  结束列
*/
private static void mergeCellsHorizontal(XWPFTable table, Integer row, Integer fromCell, Integer toCell) {
    for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) {
        XWPFTableCell cell = table.getRow(row).getCell(cellIndex);
        if ( cellIndex == fromCell ) {
            // The first merged cell is set with RESTART merge value
            cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
        } else {
            // Cells which join (merge) the first one, are set with CONTINUE
            cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
        }
    }
}

/** 
*   word跨行合并单元格
*   table 表单对象
*   row  合并列
*   fromCell 起始行
*   toCell  结束行
*/
private static void mergeCellsVertically(XWPFTable table, Integer col, Integer fromRow, Integer toRow) {
    for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {
        XWPFTableCell cell = table.getRow(rowIndex).getCell(col);
        if ( rowIndex == fromRow ) {
            // The first merged cell is set with RESTART merge value
            cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
        } else {
            // Cells which join (merge) the first one, are set with CONTINUE
            cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
        }
    }
}

XWPFDocument xwpfDocument =  new XWPFDocument(POIXMLDocument.openPackage(path));
        List<XWPFTable> tables = xwpfDocument.getTables();
        XWPFTable xwpfTable = tables.get(0);
        //mergeCellsHorizontal(xwpfTable,1,0,1);
        mergeCellsVertically(xwpfTable,1,1,2);

        xwpfDocument.write(new FileOutputStream(path));

        xwpfDocument.close();