POI删除Excel的sheet页
POI删除Excel的sheet页
poi有删除一个sheet页的方法,我希望除了一个sheet页之外其他的都删除,但是使用的时候发现,删除之后经常会出现文件破坏的提示,研究发现,是由于excel有一个默认的当前页功能。
比如表格中有3个sheet页,保存的时候默认显示的是第三页,那么删除两页之后,表格只剩一页,打开的时候表格会显示第三页失败,就会提示文件损坏。。
遇到这种情况,有两种方法:
- 将表格默认显示的页改为第一页再处理
- 使用代码修改默认页。
此方法删除表格中除了传入的页之外所有的页
/**
* 删除模板表格(除了 id之外所有的)
*/
public static void removeModelSheet(Workbook wb, int id) {
int numberOfSheets = wb.getNumberOfSheets();
for (int i = numberOfSheets - 1; i > -1; i--) {
if (i != id) {
wb.removeSheetAt(i);
}
}
//设置默认显示第一页
wb.setActiveSheet(0);
}
/**
* 删除模板表格(除了 name之外所有的)
*/
public static void removeModelSheet(Workbook wb, String name) {
int sheetIndex = wb.getSheetIndex(wb.getSheet(name));
removeModelSheet(wb,sheetIndex);
}
/**
* 删除模板表格(除了 noDelSheet之外所有的)
*/
public static void removeModelSheet(Workbook wb, Sheet noDelSheet) {
int sheetIndex = wb.getSheetIndex(noDelSheet);
removeModelSheet(wb,sheetIndex);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?