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