-1

我有一个工作簿,里面有多张工作表。我需要的是只处理第一张纸,不需要那些剩余的纸。可以使用以下方法删除特定索引处的工作表,

workbook.removeSheetAt(sheetIndex);

有没有更简单的方法来删除除一张纸之外的所有纸。还是我每次都必须循环通过上述方法来移除工作表。

4

2 回答 2

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);
    }
 }
于 2020-07-17T09:10:40.613 回答
1

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

无需找出存在多少张或其他多少。

你可能会在这个宏中找到一些有用的东西: https ://stackoverflow.com/a/30605765/4961700

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

于 2020-07-17T09:28:41.510 回答