赞
踩
在我们的项目中使用到了excel的数据导入、导出的事情,使用easyExcel是比较方便的工具,但是在使用的时候碰到一些问题。以下谈谈我的拙略的见解。
1.客户给过来的excel要导入数据至数据库,由于我当时看到的第一个demo的方法的是EasyExcel.read(String pathName,Class head,ReadLister readListener)使用本地的文件的File去操作excel的路径,我查看了源码,首先创建一个excelReadBuilder的对象出来,在excelReadBulder.file(pathName),我猜测这行代码是使用File进行操作excel,果不其然,file(pathName)这个方法是使用了return file(new File(pathName))这种形式去操作excel。在生产环境使用这种pathName显示不是特别合理,也不太现实,所以改用EasyExcel的重载的方法,EasyExcel.read(InputStream inputStream,...)去使用流的方式去进行导入数据问题就可以解决了。在ExcelReadBuilder的类中,持有ReadWorkbook的对象,同样的在file(inputStream)中,readworkbook.setFile(inputStream),在ReadWorkbook的类中,存在成员变量File file,InputStream inputStream等。显然使用流的方式进行read更加通用一些。
2.在导出excel的数据时,我碰到过一个可以导出,但是打不开导出的excel文件,我的排查思路如下:首先把以前的excel试着打开,把我导出的excel发给别人,还是打不开,排除了我的电脑的excel的软件问题,其次检查response.setContentType("application/vnd.open.....sheet")以及response.setCharaterEncoding("utf-8")这2个请求头是否生效,确认了生效之后。在easyexcel的官网的查找这个问题,大概率时因为一些拦截器把导出的stream改变了,所以造成了打不开的局面,最后加入拦截器的白名单即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。