使用Apache POI删除Excel表格

17

我需要从Excel文件中删除一个工作表。

以下是我的代码片段:

FileInputStream fileStream = new FileInputStream(destFile);
POIFSFileSystem fsPoi = new POIFSFileSystem(fileStream);

HSSFWorkbook workbook = new HSSFWorkbook(fsPoi);

int index = 0;

HSSFSheet sheet = workbook.getSheet("Setup");
if(sheet != null)   {
    index = workbook.getSheetIndex(sheet);
    workbook.removeSheetAt(index);
}
return destFile;

之后我得到的是完全相同的工作簿,其中包括名为“Setup”的表格,没有被删除。

请帮我解决这个问题。非常感激您的任何帮助。

3个回答

14

编辑完您的工作簿后,您需要将其重新保存。请尝试以下操作:-

FileOutputStream output = new FileOutputStream(destFile);
workbook.write(output);
output.close();

编辑:将其写回后,您可以返回destFile


2
private void removeOtherSheets(String sheetName, XSSFWorkbook book) {       
        for(int i=book.getNumberOfSheets()-1;i>=0;i--){
            XSSFSheet tmpSheet =book.getSheetAt(i);
            if(!tmpSheet.getSheetName().equals(sheetName)){
                book.removeSheetAt(i);
            }
        }       
}

1
使用Apache POI删除一个工作表。
//Open file
  FileInputStream inputStream = new FileInputStream(new File(filePath));
  XSSFWorkbook workBook = new XSSFWorkbook(inputStream);

//Delete Sheet
  workBook.removeSheetAt(resultWorkbook.getSheetIndex("SheetToBeDeleted"));

//Save the file
  FileOutputStream outFile =new FileOutputStream(new File(filePath));
  workBook.write(filePath);
  outFile.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接