最近做一个项目,遇到excel上传问题,在此记录下问题以及解决方案。由于开发全栈,前端后端都要写,前端使用vue+element.ui,没有使用官方推荐的那一套写法。而是用了最传统的方法,代码如下:



由于接触vue不深,可能写的不太好。下面是后端代码,由于客户需求,excel有三种不同的格式,.xls、.xlsx、.cxv。在网上找了一些资料,使用poj解析.xls和.xlsx,都是这样写:
Workbook book = null;
try {
book = new XSSFWorkbook(excelFile);
} catch (Exception ex) {
book = new HSSFWorkbook(new FileInputStream(excelFile));
}
但是我用的时候却发现问题,对于.xlsx格式文件解析成功,但是对.xls格式文件解析报错,然后我用book = new XSSFWorkbook(excelFile); 来解析.xls竟然成功了,然后仔细思考了一下,原来是因为测试的文件test.xls是由原先的test.xlsx直接改后缀得到的文件,俩个文件的内部格式其实都是.xlsx。
然后我删除文件,将源文件test.xlsx另存为test2.xls,再次解析就成功了,因为俩个文件格式一样。

这篇博客记录了一个全栈项目中遇到的Excel上传问题。前端使用Vue+Element UI,后端处理包括.xls、.xlsx和.csv三种格式的文件。在解析过程中,发现使用POI库时,.xls文件解析错误,原因是文件实际为.xlsx格式。通过另存为正确解决了这个问题。而对于.csv文件,由于其本质是文本文件,不能用处理.xls的方式解析,需要使用Apache的OpenCSV进行解析。
最低0.47元/天 解锁文章
7299

被折叠的 条评论
为什么被折叠?



