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

Delete multiple sheets from workbook

我有一个工作簿,其中有多个 sheet。我需要的是只处理第一个 sheet 而不需要那些剩余的 sheet。可以使用

在特定索引处删除 sheet
workbook.removeSheetAt(sheetIndex);

除了一个 sheet 之外,是否有更简单的方法来删除所有 sheet。或者我是否必须循环执行上述方法以每次删除 sheet。

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

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);
    }
 }

我会把那个sheet移动到一个新的工作簿,然后关闭而不保存旧的工作簿,然后用原来的名字保存新的工作簿,这样就可以覆盖旧的。

无需查明存在多少 sheet 或其他。

您可能会在这个宏中找到有用的东西:

几年前,我们有一个删除宏,可以从文件系统目录结构中删除数百然后数千个文件,以备每月更新。然后我们意识到直接删除上层的文件系统并重新创建目录结构要快得多,节省的时间...