我有一个工作簿,里面有多个工作表。我需要的是仅处理第一张纸,而不需要其余的纸。可以使用删除特定索引的工作表,
workbook.removeSheetAt(sheetIndex);
有没有一种简单的方法可以删除除一张纸以外的所有纸。还是我必须遍历上述方法才能每次都删除工作表。
答案 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宏,可以从文件系统目录结构中删除成百上千个文件,以准备每月更新。然后我们意识到,只需删除较高级别的文件系统并重新创建目录结构(节省时间)即可,速度要快得多。