个人观点,不知道可行不

sheet.removeRow(row);
然后
把后面的行insert到这行前面
然后删除掉后面的行
你看行不行

解决方案 »

  1.   

    自已再顶一下,jxl我试过,不是说它没有删除的功能吗?
      

  2.   

    HSSFSheet有个方法shiftRows上下移动
    sheet.shiftRows(thisrow, lastrow, shiftcount);
    比如你删rownum=10的,就这样写
    sheet.shiftRows(10, sheet.getLastRowNum(), -1);
    -1表示把下面所有行上移1格
    付送我写的一个方法        sheet.shiftRows(thisrow, lastrow, shiftcount);
            for (int z = 0; z < shiftcount; z++) {
                HSSFRow row = sheet.getRow(thisrow);
                HSSFRow oldrow = sheet.getRow(thisrow + shiftcount);
                for (short i = 0; i <= oldrow.getLastCellNum(); i++) {
                    HSSFCell cell = row.createCell(i);
                    HSSFCell oldcell = oldrow.getCell(i);
                    if (oldcell != null) {
                        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                        cell.setCellValue(oldcell.getStringCellValue());
                        cell.setCellStyle(oldcell.getCellStyle());
                    }
                }
                thisrow++;
            }此方法上下移动并且保持单元格的格式也被复制,或者说下移后产生的空行格式与原来此位置的格式一致
      

  3.   

    试了一下,
    for (int y = 0; y < rowCount; y++)
    {
    if (null == sheet.getRow(y))
    {

    sheet.shiftRows(y, sheet.getLastRowNum(),-1);
    }
    }这是我的代码,我想把整个SHEET中所有的空行全不DEL,但是这么处理的结果是把第一个空行上面的一行删除了,并且把最下面的一行有数据的行也删除了,别的都没动,为什么!
      

  4.   

    sheet.getRow(i)==null
    这个不一定就是指你看到一行空白,一个空白行不一定他就是null,你可以
    if(sheet.getRow(i)==null){
    System.out.println(i);
    }sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
    才是把第i+1行移到第i行的位置