// Blank Document XWPFDocument document = new XWPFDocument(); File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory(); String desktopPath = desktopDir.getAbsolutePath(); //得到桌面路径 // Write the Document in file system FileOutputStream out = new FileOutputStream(new File(desktopPath+"\\create_table.docx")); // create paragraph XWPFParagraph paragraph = document.createParagraph(); paragraph.setAlignment(ParagraphAlignment.valueOf(HSSFCellStyle.ALIGN_CENTER)); // Set Bold an Italic XWPFRun title = paragraph.createRun(); title.setBold(true); title.setFontFamily("黑体"); title.setText("中心组学习"); title.addBreak(); // create table XWPFTable table = document.createTable(); table.setWidth(1000); // create first row XWPFTableRow tableRowOne = table.getRow(0); tableRowOne.getCell(0).setText("日期"); tableRowOne.getCell(0).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowOne.addNewTableCell().setText("地点"); tableRowOne.getCell(1).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000)); tableRowOne.addNewTableCell().setText("主持人"); tableRowOne.getCell(2).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowOne.addNewTableCell().setText("参加人数"); tableRowOne.getCell(3).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowOne.addNewTableCell().setText("时长"); tableRowOne.getCell(4).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); // create second row XWPFTableRow tableRowTwo = table.createRow(); tableRowTwo.getCell(0).setText(""); tableRowTwo.getCell(0).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowTwo.getCell(1).setText(""); tableRowTwo.getCell(1).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000)); tableRowTwo.getCell(2).setText(""); tableRowTwo.getCell(2).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowTwo.getCell(3).setText(""); tableRowTwo.getCell(3).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowTwo.getCell(4).setText(""); tableRowTwo.getCell(4).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); // create second row XWPFTableRow tableRowThree = table.createRow(); tableRowThree.getCell(0).setText("学习内容"); tableRowThree.getCell(0).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowThree.getCell(1).setText(""); tableRowThree.getCell(1).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(6500)); mergeCellsHorizontal(table,2,1,4); // create second row XWPFTableRow tableRowFor = table.createRow(); tableRowFor.getCell(0).setText("现场抓拍"); tableRowFor.getCell(0).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowFor.getCell(1).setText(""); tableRowFor.getCell(1).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(6500)); mergeCellsHorizontal(table,3,1,4); // create second row XWPFTableRow tableRowFive = table.createRow(); tableRowFive.getCell(0).setText("印证资料"); tableRowFive.getCell(0).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowFive.getCell(1).setText(""); tableRowFive.getCell(1).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(6500)); mergeCellsHorizontal(table,4,1,4); // create second row XWPFTableRow tableRowSix = table.createRow(); tableRowSix.getCell(0).setText("记录人"); tableRowSix.getCell(0).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(1500)); tableRowSix.getCell(1).setText(""); tableRowSix.getCell(1).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000)); tableRowSix.getCell(2).setText("审核人"); tableRowSix.getCell(2).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000)); tableRowSix.getCell(3).setText(""); tableRowSix.getCell(3).getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2500)); mergeCellsHorizontal(table,5,3,4); document.write(out); out.close();}
/** * @Description: 跨列合并 */ public static void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int 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); } } }
效果图: