![](/img/trans.png)
[英]Permanently Delete Empty Rows Apache POI using JAVA in Excel Sheet
[英]Unable to delete the Empty Rows Excel File using Apache POI
我一直在尝试删除我的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个小时以来,我一直在尝试做这件事。 提前致谢!
当任何行为空白时,将有两种情况。
通常,第二种情况会发生。 也许就您而言,这应该是原因。 为此,您需要添加其他条件以检查所有单元格是否为空白。
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--;
}
}
好的,我不确定您为什么会有问题,但是我认为这是由于您访问工作簿的方式所致。 假设您向下发送的file
是您要使用的XLS工作簿的位置。 您需要检查的第一件事是该工作簿是否存在,因为POI对现有v不存在的工作簿的处理方式是不同的。 这样完成:
HSSFWorkbook wb;
HSSFSheet sheet;
if(file.exists()) {//The workbook has been created already
wb = (HSSFWorkbook) WorkbookFactory.create(new FileInputStream(file));//Line 1
sheet = wb.getSheetAt(0);
} else {//No workbook exists at the location the "file" specifies
wb = new HSSFWorkbook();
sheet = wb.createSheet();
}
一些注意事项: Line 1
抛出java.io.IOException
2个异常IOException
和org.apache.poi.openxml4j.exceptions.InvalidFormatException
InvalidFormatException
。 因此,您可以根据需要抛出异常或用try-catch包围。
现在,如果文件始终存在,则实际上不需要if-else语句。 但是,要正确打开所需的工作簿,我将使用WorkbookFactory
。
最后,您只需输入以下内容即可简化文件保存:
wb.write(new FileOutputStream("C:/juni1.xls");
请注意,您还将保存的文件写入其他位置。 因此,在更正后的原始工作簿位于其他位置时,原始工作簿不会受到影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.