POI常用方法

1.Excel插入行,下方行动态移动


    /**
     * Excel插入行,下方行动态移动
     * startRow:开始行数
     * rows:要插入多少行
     */
    private void excelInsertRow(int startRow,int rows,XSSFSheet sheet)  {
		  sheet.shiftRows(startRow + 1, sheet.getLastRowNum(), rows,true,false);
		  startRow = startRow - 1;
		  for (int i = 0; i < rows; i++) {
              XSSFRow sourceRow;
              XSSFRow targetRow;
              XSSFCell sourceCell;
              XSSFCell targetCell;
              short m;
              startRow = startRow + 1;
              sourceRow = sheet.getRow(startRow);
              targetRow = sheet.createRow(startRow + 1);
              targetRow.setHeight(sourceRow.getHeight());
              for (m = sourceRow.getFirstCellNum(); m < sourceRow.getLastCellNum(); m++) {
                  sourceCell = sourceRow.getCell(m);
                  targetCell = targetRow.createCell(m);
                  targetCell.setCellStyle(sourceCell.getCellStyle());
                  targetCell.setCellType(sourceCell.getCellType());
              }
		  }
    }

2.合并单元格

 	/**
     * 合并单元格
     * @param sheet sheet页
     * @param titleColumn 标题占用行
     * @param cellIndex 哪个单元格
     */
    private void mergeCell(XSSFSheet sheet,int titleColumn,int cellIndex){
        //多少行
        int rowCount = sheet.getPhysicalNumberOfRows();
        String cellText = "";
        //开始下标
        int startIndex = 0;
        //结束下标
        int endIndex = 0;
        XSSFRow row = null;
        Cell cell = null;
        for(int i = titleColumn;i < rowCount;i++){
            row = sheet.getRow(i);
            cell = row.getCell(cellIndex);
            cell.setCellType(Cell.CELL_TYPE_STRING);
            if(!cell.getStringCellValue().equals(cellText)){
                if(startIndex != 0){
                    endIndex = (i-1);
                    sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, cellIndex, cellIndex));
                }
                cellText = cell.getStringCellValue();
                startIndex = i;
            }
        }
        endIndex = (rowCount - 1);
        sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, cellIndex, cellIndex));
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值