貌似有bug,用for循环删除,但是每次都只删除一半数目的行,如果是奇数数目,则删除(奇数+1)/2数目的行,很诡异,求高手解决public void removeColumn(){
File file = new File("./test.xls");
try {
// 创建只读的Excel工作薄对象
Workbook readOnly = Workbook.getWorkbook(file);
// 创建可写入的Excel工作薄对象
WritableWorkbook book = Workbook.createWorkbook(file, readOnly);
// 获取名为“new run time”的工作薄
WritableSheet sheet = book.getSheet("VM Machines");
int row = sheet.getRows();
System.out.println(row);
for(int i=2;i<=77;i++){
System.out.println("remove:" + i);
sheet.removeRow(i);
}
// 写入Excel对象
book.write();
// 关闭可写入的Excel对象
book.close();
// 关闭只读的Excel对象
readOnly.close(); } catch (Exception e) {
System.out.println(e);
}
}第一次调用执行,删掉了2~77行的所有奇数行;第二次调用,又只删掉了一半的行,郁闷的每次print显示都删了remove:2
remove:3........
remove:76
remove:77到底错在哪儿了???
File file = new File("./test.xls");
try {
// 创建只读的Excel工作薄对象
Workbook readOnly = Workbook.getWorkbook(file);
// 创建可写入的Excel工作薄对象
WritableWorkbook book = Workbook.createWorkbook(file, readOnly);
// 获取名为“new run time”的工作薄
WritableSheet sheet = book.getSheet("VM Machines");
int row = sheet.getRows();
System.out.println(row);
for(int i=2;i<=77;i++){
System.out.println("remove:" + i);
sheet.removeRow(i);
}
// 写入Excel对象
book.write();
// 关闭可写入的Excel对象
book.close();
// 关闭只读的Excel对象
readOnly.close(); } catch (Exception e) {
System.out.println(e);
}
}第一次调用执行,删掉了2~77行的所有奇数行;第二次调用,又只删掉了一半的行,郁闷的每次print显示都删了remove:2
remove:3........
remove:76
remove:77到底错在哪儿了???
所有行自动向上移动了一行。。
而你的i却向下移动了一行,所以就漏了一半。
改成这样吧:for(int i=2;i<=77;i++){
sheet.removeRow(2);
}