java.lang.IllegalArgumentException: The workbook already contains a sheet of this name
在使用HSSFSheet类设置Excel表的表头时出现的bug,该异常信息的意思是:该工作簿已包含此名称的工作表。也就是表名重复?贴出我的代码。
HSSFSheet sheet = wb.createSheet((String) keywordMap.get("keyword") + "-" + (String) keywordMap.get("appName") + "-" +
keywordMap.get("appMarket"));
贴出一张图解释什么是sheet:
解决这个问题之前,我们首先要知道Excel中Sheet的命名规则:
- sheet名称不能有重复
- sheet的名称不能为空或空字符串(不能包含: 、/、?、*、[]等;能包含英文、汉字、| 、()等)都不可以
- sheet名称不能超过31个,不然会自动切割字符串,导致sheet名可能重复
既然知道了可能会出错的原因,在看到我的代码,不难发现,唯一可能出现异常的原因就是sheet名称重复。
所以,先去检查要存入Excel中的数据是否存在相同的数据,果然,我在表格中找到了两条相同的数据。删除其中一条项目,再次点击导出表格按钮,成功导出。其他同学如果也是报这个错误,不妨参考我上述写的sheet命名规范去找是不是那里数据设置出现问题。