Java用POI删除一个Excel的特定sheet表
工作中遇到需要批量删除Excel文件下的特定名称的sheet表,打算采用POI的方式进行操作
1.导包
想用poi进行操作不单单需要导入poi这个包,还需要导入其他辅助包,导入的包如图:
2.代码实现
/**
* 根据sheet名称删除sheet表
*
* @param file
* @param name
*/
public void removeSheet(File file, String name) {
System.out.println("删除===》" + file + "的" + name + "sheet表");
try {
FileInputStream fis = new FileInputStream(file);
HSSFWorkbook xssfWorkbook = new HSSFWorkbook(fis);
xssfWorkbook.removeSheetAt(xssfWorkbook.getSheetIndex(name));
FileOutputStream out = new FileOutputStream(file);
xssfWorkbook.write(out);
fis.close();
out.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
这里需要注意,根据Excel版本的差异,用到的类会发生变化。07版的excel用HSSFWorkbook这个类,07版以上的用XSSFWorkbook这个类。如果需要的话可以先判断一个文件的版本类型。可以通过获取文件的后缀名得到:
/**
* 根据文件的路径获取后缀名
*/
public static String getExtendNormal(String filePath) {
String extension = "";
int index = filePath.lastIndexOf('.');
if (index > 0) {
extension = filePath.substring(index);
}
return extension;
}
如果是.xls后缀名结束的是07版的。