gpt4 book ai didi

java - 无法使用 Apache POI 删除空行 Excel 文件

转载 作者:行者123 更新时间:2023-12-03 00:29:46 25 4
gpt4 key购买 nike

我一直在尝试用我的代码删除 Excel 文件中的空行!我的代码是:

private void shift(File f){
File F=f;
HSSFWorkbook wb = null;
HSSFSheet sheet=null;
try{
FileInputStream is=new FileInputStream(F);

wb= new HSSFWorkbook(is);
sheet = wb.getSheetAt(0);
for(int i = 0; i < sheet.getLastRowNum(); i++){
if(sheet.getRow(i)==null){
sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
i--;
}
}

FileOutputStream fileOut = new FileOutputStream("C:/juni1.xls");
wb.write(fileOut);
fileOut.close();
//Here I want to write the new update file without empty rows!
}
catch(Exception e){
System.out.print("SERRO "+e);
}

}

该代码根本没有任何作用。谁能告诉我问题是什么,请帮助我,自过去 10 小时以来我一直在尝试做这件事。提前致谢!

最佳答案

任一行为空时,有两种情况。

  1. 首先,该行位于其他行之间,但从未被初始化或创建。在这种情况下,Sheet.getRow(i) 将为 null。
  2. 其次,行已创建,其单元格可能会也可能不会被使用,但现在其所有单元格都是空白的。在这种情况下,Sheet.getRow(i) 不会为 null。 (您可以使用 Sheet.getRow(i).getLastCellNum() 进行检查,它将始终显示与其他行相同的计数。)

一般情况下会出现第二种情况。也许在你的情况下,这应该是原因。为此,您需要添加额外的条件来检查所有单元格是否为空白。

    for(int i = 0; i < sheet.getLastRowNum(); i++){
if(sheet.getRow(i)==null){
sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
i--;
continue;
}
for(int j =0; j<sheet.getRow(i).getLastCellNum();j++){
if(sheet.getRow(i).getCell(j).toString().trim().equals("")){
isRowEmpty=true;
}else {
isRowEmpty=false;
break;
}
}
if(isRowEmpty==true){
sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
i--;
}
}

关于java - 无法使用 Apache POI 删除空行 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com