use*_*503 5 java excel row apache-poi
我想永久删除那些没有任何类型数据的空行!我这样做:
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);
int rowIndex = 0;
int lastRowNum = sheet.getLastRowNum();
if (rowIndex >= 0 && rowIndex < lastRowNum) {
sheet.shiftRows(rowIndex, lastRowNum, 500);
}
FileOutputStream fileOut = new FileOutputStream("C:/juni.xls");
wb.write(fileOut);
fileOut.close();
}
catch(Exception e){
System.out.print("SERRO "+e);
}
}
Run Code Online (Sandbox Code Playgroud)
在shiftRows()之后我写了我的新文件.但我的代码现在已经生效了.我只需要删除/删除我的数据中的空行(任何一个).这样做有可能吗?如果是的话,我做得对吗?如果没有人可以帮助我这样做吗?提前致谢!
Eri*_*yen 11
如果记忆回忆shiftRows(int startRow, int endRow, int n)
是你需要的.我不太记得如何检查一行是否为空但如果你知道一行是空的(通常是通过使用removeRow(Row row)
)并且你知道rowIndex,那就不是那么糟糕了.致电:
int rowIndex; //Assume already known and this is the row you want to get rid of
int lastIndex = sheet.getLastRowNum();
sheet.shiftRows(rowIndex + 1, lastIndex, -1);
Run Code Online (Sandbox Code Playgroud)
你将[rowIndex + 1,lastIndex]中的每一行向上移动1(这应该有效地删除一个空行).如果你有多行并且有办法确定行是否为空,那么我建议如下:
for(int i = 0; i < sheet.getLastRowNum(); i++){
if(isEmpty(sheet.getRow(i)){
sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
i--;//Adjusts the sweep in accordance to a row removal
}
}
boolean isEmpty(Row row){
//Code to determine if a row is empty
}
Run Code Online (Sandbox Code Playgroud)
作为一个小注释,如果n
是负数,则行向上移动.如果n
是肯定的,则行向下移动.所以我不太确定你是否打算在你提供的代码中将那一行的行减少500或者不是.我希望这有帮助.
归档时间: |
|
查看次数: |
17099 次 |
最近记录: |