从工作簿中删除多个工作表

时间:2020-07-17 08:27:46

标签: java spring-boot apache-poi hssfworkbook

我有一个工作簿,里面有多个工作表。我需要的是仅处理第一张纸,而不需要其余的纸。可以使用删除特定索引的工作表,

workbook.removeSheetAt(sheetIndex);

有没有一种简单的方法可以删除除一张纸以外的所有纸。还是我必须遍历上述方法才能每次都删除工作表。

2 个答案:

答案 0 :(得分:1)

您将必须遍历要删除的所有工作表。也就是说,它不是太多的代码:

File f = new File("path-to-your-workbook");
        
try (FileInputStream file = new FileInputStream(f)) {

    XSSFWorkbook workbook = new XSSFWorkbook(file);
            
    int totalSheets = workbook.getNumberOfSheets();
            
    for (int i = 1; i < totalSheets; i++ ) {
        workbook.removeSheetAt(1);
    }
            
    try (FileOutputStream output = new FileOutputStream(f)) {
        workbook.write(output);
    }
 }

答案 1 :(得分:1)

我只需将一张纸移动到新工作簿中,然后关闭而不保存旧工作簿,然后使用原始名称保存新工作簿,以覆盖旧工作簿。

无需找出存在的工作表数量或其他数量。

您可能会在此宏中找到一些有用的信息: https://stackoverflow.com/a/30605765/4961700

几年前,我们有一个delete宏,可以从文件系统目录结构中删除成百上千个文件,以准备每月更新。然后我们意识到,只需删除较高级别的文件系统并重新创建目录结构(节省时间)即可,速度要快得多。