一背景介绍
java web环境需要读取excel表格中的数据,插入到数据库中,需要用到XSSFWorkbook类读表格文件,关键代码如下:
//读取excel
public static Workbook readExcel(String filePath) {
Workbook wb = null;
if (filePath == null) {
return null;
}
String extString = filePath.substring(filePath.lastIndexOf("."));
InputStream is = null;
try {
is = new FileInputStream(filePath);
if (".xls".equals(extString)) {
return wb = new HSSFWorkbook(is);
} else if (".xlsx".equals(extString)) {
return wb = new XSSFWorkbook(is);
} else {
return wb = null;
}
} catch (FileNotFoundException e) {
LOGGER.error(e.toString());
} catch (IOException e) {
LOGGER.error(e.toString());
}
return wb;
}
二 问题发生
在本地运行,如写个main方法跑或者用@test跑是能正常运行,但是到web上,打断点发现不能找到这个类
于是尝试升级依赖包
还是不行。不能解决掉,陷入了深深的思考中。对于环境问题和依赖问题,处理起来是真的难受。
尝试了其他作者给的推荐依赖和版本,还是不行:
第一个:
第二个:
三 问题解决
绕过问题,山不过来我过去。
改变文件格式:即xlsx为xls,最终回到了HSSFWorkbook类读取。
PATH = "/Users/xxx/work/B/A_info.xlsx";
为
PATH = "/Users/xxx/work/B/A_info.xls";
这样在web层就能访问了。
(ps:需要注意的是,如果你直接把.xlsx格式文件变为.xls是不行的,需要先打开文件,点击另存为.xls格式才行,这里不能偷懒,笔者也踩过这个坑)