我有一个工作簿,里面有多张工作表。我需要的是只处理第一张纸,不需要那些剩余的纸。可以使用以下方法删除特定索引处的工作表,
workbook.removeSheetAt(sheetIndex);
有没有更简单的方法来删除除一张纸之外的所有纸。还是我每次都必须循环通过上述方法来移除工作表。
我有一个工作簿,里面有多张工作表。我需要的是只处理第一张纸,不需要那些剩余的纸。可以使用以下方法删除特定索引处的工作表,
workbook.removeSheetAt(sheetIndex);
有没有更简单的方法来删除除一张纸之外的所有纸。还是我每次都必须循环通过上述方法来移除工作表。
您将不得不遍历所有要删除的工作表。也就是说,这不是太多的代码:
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);
}
}
我只需移动一张工作表以保留到新工作簿,然后关闭而不保存旧工作簿,然后使用原始名称保存新工作簿,从而覆盖旧工作簿。
无需找出存在多少张或其他多少。
你可能会在这个宏中找到一些有用的东西: https ://stackoverflow.com/a/30605765/4961700
几年前,我们有一个删除宏,可以从文件系统目录结构中删除成百上千个文件,为每月更新做好准备。然后我们意识到在上层删除文件系统并重新创建目录结构要快得多,节省的时间......