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();