easyexcel解析xls文件:Convert excel format exception.You can try specifying the ‘excelType‘ yourself
今天遇到一个问题,使用layui前端框架,table.export导出的excel再导入,后台easyExcel识别不是excel文件。
前端:layui
后端:jfinal
业务是这样,要导入学生成绩,首先下载一个模板,模板中包含学生名单,用户只需要下载模板填入成绩后,重新导入回去。
一开始我是这么做:先查询出学生名单,再使用[table.export](https://table.export)方式把学生名单导出为Excel文件(.xls),导入是直接上传文件到后端,easyExcel解读文件然后batchsave到mysql数据库。导出文件正常,但是传到后台发生了这样的错误:
ERROR | cn.baoye.Controller.Usual_Controller.upload_usualscore() : /Usual_performance/upload_usualscore?course_sn=33&term_sn=1
com.alibaba.excel.exception.ExcelCommonException: Convert excel format exception.You can try specifying the 'excelType' yourselfat com.alibaba.excel.support.ExcelTypeEnum.valueOf(ExcelTypeEnum.java:71)[easyexcel-2.1.6.jar:]at com.alibaba.excel.read.metadata.holder.ReadWorkbookHolder.<init>(ReadWorkbookHolder.java:160)[easyexcel-2.1.6.jar:]at com.alibaba.excel.context.AnalysisContextImpl.<init>(AnalysisContextImpl.java:45)[easyexcel-2.1.6.jar:]at com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java:44)[easyexcel-2.1.6.jar:]at com.alibaba.excel.ExcelReader.<init>(ExcelReader.java:143)[easyexcel-2.1.6.jar:]at com.alibaba.excel.read.builder.ExcelReaderBuilder.build(ExcelReaderBuilder.java:270)[easyexcel-2.1.6.jar:]at com.alibaba.excel.read.builder.ExcelReaderBuilder.sheet(ExcelReaderBuilder.java:293)[easyexcel-2.1.6.jar:]at com.alibaba.excel.read.builder.ExcelReaderBuilder.sheet(ExcelReaderBuilder.java:281)[easyexcel-2.1.6.jar:]at cn.baoye.Controller.Usual_Controller.upload_usualscore(Usual_Controller.java:195)[file:/D:/baoyeProject/13智慧教育管理平台/edudata/target/classes/:]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_333]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_333]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_333]at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_333]at com.jfinal.aop.Invocation.invoke(Invocation.java:97)[jfinal-4.9.21.jar:]at cn.baoye.Interceptor.LoginInterceptor.intercept(LoginInterceptor.java:31)[file:/D:/baoyeProject/13智慧教育管理平台/edudata/target/classes/:]at com.jfinal.aop.Invocation.invoke(Invocation.java:91)[jfinal-4.9.21.jar:]at com.jfinal.core.ActionHandler.handle(ActionHandler.java:88)[jfinal-4.9.21.jar:]at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:90)[jfinal-4.9.21.jar:]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)[catalina.jar:9.0.50]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)[catalina.jar:9.0.50]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)[catalina.jar:9.0.50]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)[catalina.jar:9.0.50]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)[catalina.jar:9.0.50]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)[catalina.jar:9.0.50]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)[catalina.jar:9.0.50]at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)[catalina.jar:9.0.50]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)[catalina.jar:9.0.50]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)[catalina.jar:9.0.50]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)[tomcat-coyote.jar:9.0.50]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)[tomcat-coyote.jar:9.0.50]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)[tomcat-coyote.jar:9.0.50]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)[tomcat-coyote.jar:9.0.50]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)[tomcat-coyote.jar:9.0.50]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[:1.8.0_333]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)[:1.8.0_333]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)[tomcat-util.jar:9.0.50]at java.lang.Thread.run(Thread.java:750)[:1.8.0_333]
转换excel格式异常。您可以尝试自己指定“excelType” 那就是传的不是excel文件?
查了很多资料也没有找到原因,要么自己太菜,要么使用的框架太小众,我就自己想办法解决。
然后打开layui导出的excel文件:
尝试另存,发现默认保存类型不是excel的后缀:
另存为.xls/.xlsx文件后导入就正常了,但是我们不能让客户每一次都要另存吧?
所以我换了一个思路:
建立一个excel模板文件,只包含表头,下载模板的时候在后端填入学生名单后,生成excel文件,再返回文件名,前端直接使用[window.location.href]进行下载。
后端:
//excel模板路径File fi = new File(getSession().getServletContext().getRealPath("download") + "/平时成绩导入模板.xlsx");//读取excel模板XSSFWorkbook wb = new XSSFWorkbook(fi);//读取模板内Sheet1内容XSSFSheet sheet = wb.getSheet("Sheet1");//在相应的单元格进行赋值XSSFRow row;for (int i=0;i< recordList.size();i++) {row = sheet.createRow(i+1);// 第四步,创建单元格,并设置值row.createCell((short)0).setCellValue(recordList.get(i).getStr("realname"));row.createCell((short)1).setCellValue(recordList.get(i).getStr("order"));row.createCell((short)2).setCellValue(recordList.get(i).getStr("upachi1"));row.createCell((short)3).setCellValue(recordList.get(i).getStr("upachi2"));row.createCell((short)4).setCellValue(recordList.get(i).getStr("upachi3"));row.createCell((short)5).setCellValue(recordList.get(i).getStr("upachi4"));row.createCell((short)6).setCellValue(recordList.get(i).getStr("upachi5"));row.createCell((short)7).setCellValue(recordList.get(i).getStr("upachi6"));row.createCell((short)8).setCellValue(recordList.get(i).getStr("upachipe"));}try ( //修改模板内容导出新模板FileOutputStream out = new FileOutputStream(filePath)) {File file = new File(filePath);if(file.exists()){//为了保持数据是最新的,先删除同名文件,file.delete();}//导出excelwb.write(out);renderJson(Ret.ok().set("code", 0).set("filename",file.getName()));} catch (Exception e) {e.getMessage();}
前端:
$.ajax({url: './downloadexcel',data: {"term_sn":term_sn,"filename":val,"course_sn":course_sn,"class_sn":class_sn},datatype:"json",success: function (result) {//浏览器A下载window.location.href='../download/'+result.filename;}})
运行测试,OK!
技术小白,只是记录一下遇到问题和自己的解决思路。
easyexcel解析xls文件:Convert excel format exception.You can try specifying the ‘excelType‘ yourself相关推荐
- 【EasyExcel】公司文件加密软件导致 Convert excel format exception.You can try specifying the ‘excelType‘ yourself
做POI操作,用阿里的依赖处理Excel 报错 Convert excel format exception.You can try specifying the 'excelType' yourse ...
- java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】
本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
- Excel中使用宏工具,告别重复工作,批量处理xls文件 - WPS Excel
核心步骤 在excel中启用宏 打开一个实例文档,创建宏,记录操作,保存宏为独立的bas文件 每编辑一个excel文档,都先导入这个宏,运行这个宏,文档数据被自动处理,保存为不带宏的excel文档 o ...
- EXCEL解析:使用poi解析xlsx和xls后缀的excel文件
1.pom依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency><g ...
- python 解析下载的二进制Excel文件内容
先描述一波问题场景: 需求是项目中调接口会下载Excel文件,然后解析出Excel文件中固定行列的值即可.如果直接读取Excel文件,使用xlrd库即可.但是调下载接口返回的二进制的内容~~~,如下: ...
- linux libxls xls_open 中文,Linux/Mingw Excel (*.xls)文件读取,使用libxls库
做个项目需要读取xls文件,通过搜索,找到三个库,BasicExcel.libxl.libxls. 因为BasicExcel不支持中文,而且06年就没更新了,果断放弃.libxl感觉是这三个库中最好的 ...
- python生成wps文件_使用Python操作XLS文件(wps中叫et)
一旦TE需要* *信息的列表,我导出一个txt文件与python和扔给他们,但是他们很不开心,哈哈,因为他们想要将数以百计的数据放到xls文件列表输出,工作数量太大,所以我问我出口成xls文件然后给他 ...
- 使用Python操作XLS文件(wps中叫et)
有一次TE需要一个**信息列表,我用python导出了一个txt文件丢给了他们,结果他们很不悦哇,呵呵,因为他们要把几百项数据人肉到xls文件中作为列表输出,工作量太大,便要求我导出成xls文件然后再 ...
- python操作xls文件_【转】使用Python操作XLS文件
我在网上找了下,发现至少有两种方法,第一种是直接操作excle的com库,当然python自带的lib里面已经给我们封装好了实现,直接使用就可以 了,win32com.client,这种方法甚至可以直 ...
最新文章
- TCP的那些事(转载)
- python汽车仿真_汽车山羊问题的分析以及Python和MATLAB仿真实验
- java类与对象实验报告心得体会_Java类与对象实验报告.doc
- Jmeter接口测试实例图文示例
- python 学习之路开始了
- 键盘表和ASCII码表
- 【Android】Android 集成芯烨云打印机实现打印票据
- Jetpack DataStore 你总要了解一下吧?
- 计算机键盘fn,笔记本键盘fn键有什么用 笔记本键盘fn键使用说明大全
- JAVA proxy dns回源_常见问题 - CDN 回源配置相关问题
- 8个成语接龙首尾相连_成语接龙该怎么接?每组开头有一个成语,要接龙,每一个词的末尾都是下一个词的开头,从 来日方长 到 取之不尽,中间要填8个...
- 古琴入门-古琴十大名曲-古琴教学——唐畅古琴
- GEE实战4:利用GEE获取进行气温空间随机采样【随机采样】
- 解决Google 云端硬盘,文件下载问题
- 删除文件夹遇到的 错误ox80070091:目录不是空的错误解决
- 新手做SEO迷茫时应该做什么
- 通过Iconfont在线调用项目图标
- 软件压力测试图片60张,看图测压力,你抗压么?
- Bulldog2 渗透测试
- fiddler对浏览器、app抓包及证书安装
热门文章
- office2007每次打开都配置进度_每次打开excel2007都要配置进度怎么办?
- 干货收藏|如何用chrom插件实现U校园自动刷课
- 魅族手机Root之后如何恢复
- pnp型三极管 饱和 截至_截至2013年核心Java帖子
- Ubuntu离线安装curl
- QCC3024/QCC3034/QCC3020/QCC3021/QCC3031 USB AUDIO USB声卡 双向动态切换功能
- php文章详情页排版,WordPress自定义文章详情页模板
- 影响因子在10的计算机杂志什么水平,国人无人发表的TOP期刊,影响因子翻倍,5分变10分,不收版面费!...
- LED产品认证和检测
- eviews9.0详细安装步骤