EasyExcel通过模板导出数据
EasyExcel通过模板导出数据
大家好,这两天在做excel导出功能,使用的是easyExcel,不得不说其功能全面,很好入手。
但是在开发的过程中也会遇到一些文档里无法提供解决的问题,这里我分享代码,方便以后自己观看,也希望能帮到想要导出功能的童鞋。
easy excel官网入口.
JAVA 导出 EXCEL入口
注: 大家好,今天更新内容:eastExcel 使用模板下载,本地正常下载,但是发布到服务器上遇到一个一些问题,
目前抽空在看看解决方法,再最下面贴出来希望有大佬看到能指点一二,小弟在这里先谢过了。
我又换了一个方法去实现通过模板下载excel功能
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.0-beta1</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency>
@Overridepublic void exportInfo(List<CustomerInfo> customerDealerInfo, HttpServletResponse response) throws IOException {OutputStream out = null;BufferedOutputStream bos = null;try {String templateFileName = FileUtil.getPath() + "templates" + File.separator + "模板.xls";response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");String fileName = URLEncoder.encode("下载后的名称.xls", "utf-8");response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));out = response.getOutputStream();bos = new BufferedOutputStream(out);//读取ExcelExcelWriter excelWriter = EasyExcel.write(bos).withTemplate(templateFileName).build();WriteSheet writeSheet = EasyExcel.writerSheet().build();//customerDealerInfo 是我查询并需导出的数据,并且里面的字段和excel需要导出的字段对应// 直接写入Excel数据excelWriter.fill(customerDealerInfo, writeSheet);excelWriter.finish();bos.flush();} catch (Exception e) {// 重置responseresponse.reset();response.setContentType("application/json");response.setCharacterEncoding("utf-8");Map<String, String> map = new HashMap<String, String>(16);map.put("status", "failure");map.put("message", "下载文件失败" + e.getMessage());response.getWriter().println(JSON.toJSONString(map));}}
public class FileUtil {public static InputStream getResourcesFileInputStream(String fileName) {return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName);}public static String getPath() {return FileUtil.class.getResource("/").getPath();}public static File createNewFile(String pathName) {File file = new File(getPath() + pathName);if (file.exists()) {file.delete();} else {if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}}return file;}public static File readFile(String pathName) {return new File(getPath() + pathName);}
}
我查询并需导出的数据,并且里面的字段和excel需要导出的字段对应![](/assets/blank.gif)
-------------------------------------------------华丽的分割线-------------------------------------------------------------
大神能看到这里,感激不经,废话不多,请过目
这里是报错行:ExcelWriter excelWriter = EasyExcel.write(bos).withTemplate(templateFileName).build();
com.alibaba.excel.exception.ExcelGenerateException: Create workbook failureat com.alibaba.excel.context.WriteContextImpl.<init>(WriteContextImpl.java:87)at com.alibaba.excel.write.ExcelBuilderImpl.<init>(ExcelBuilderImpl.java:35)at com.alibaba.excel.ExcelWriter.<init>(ExcelWriter.java:47)at com.alibaba.excel.write.builder.ExcelWriterBuilder.build(ExcelWriterBuilder.java:130)at cn.gaialab.gaiamind.microservice.brp.service.ecxport.impl.PlanVisitDataServiceImpl.exportRoutePlanningStore(PlanVisitDataServiceImpl.java:121)at cn.gaialab.gaiamind.microservice.brp.web.ecxport.ExportCustomerInfoController.exportRoutePlanningStore1(ExportCustomerInfoController.java:41)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg HSSF instead of XSSF)at org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:147)at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:175)at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104)at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:307)at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:303)at com.alibaba.excel.util.WorkBookUtil.createWorkBook(WorkBookUtil.java:32)at com.alibaba.excel.context.WriteContextImpl.<init>(WriteContextImpl.java:85)... 55 common frames omitted2020-03-24 15:00:49.261 INFO 11336 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE-BRP/${eureka.instance.hostname}:service-brp:7081 - Re-registering apps/SERVICE-BRP
2020-03-24 15:00:49.261 INFO 11336 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE-BRP/${eureka.instance.hostname}:service-brp:7081: registering service...
2020-03-24 15:00:49.266 INFO 11336 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE-BRP/${eureka.instance.hostname}:service-brp:7081 - registration status: 204
2020-03-24 15:02:23.933 INFO 11336 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
感言
感谢大家的帮助,问题已经解决,并且重新写了一篇,希望能给看到这的朋友,送上一点绵薄之力。
Easy Excel动态组合导出.
EasyExcel通过模板导出数据相关推荐
- easyexcel按照模板导出数据
1.配置pom文件 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel< ...
- easyexcel 无模板写入_给位,问个问题,用easyExcel无模板导出数据时,怎么在指定单元格添加计算公式呢?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 easyExcel没用过,spire.xls.jar可以给指定单元格添加各种公式 import com.spire.xls.*; public class ...
- EasyExcel使用模板填充数据导出遇到的坑
EasyExcel使用模板填充数据导出遇到的坑 1.最近需求涉及excel的导出,所以选择用阿里的EasyExcel框架来使用是比较方便的,这个框架封装了许多方法来供我们使用,比传统POI简单许多 2 ...
- easyexcel复杂模板导出(合并行列,列统计汇总)
easyexcel复杂模板导出(合并行列,统计汇总) 为什么使用easyexcel 1. easyexcel可以通过模板导出(符合项目使用习惯) 2. easyexcel支持大数据量导出,性能较好(满 ...
- 阿里easyexcel通过模板导出excel
easyexcel通过模板导出excel 之前使用其他方式进行excel的导出,像poi或者freemarker或者Beetl,效果都还行,但是总是有一些小问题.许多的解决思路都是:通过制作excel ...
- EasyExcel根据模板导出动态修改sheet名称
前言 在公司中使用easyexcel根据模板导出excel表格数据时,由于需要根据不同内容动态修改模板中sheet的名称,网上搜索也很少有这一块的具体实现,所以就给大家分享一下自己的实现方式(也是作者 ...
- poi 使用模板导出数据
poi 使用模板导出数据 引入依赖 代码 错误 POI 操作Excel 出现如下异常 xlsx模板自己随便建一个放在resource目录下就行,测试代码以及遇到的报错问题如下: 引入依赖 <!- ...
- C#中通过Excel模板导出数据
一.实现效果 1.1.编写特定格式的Excel模板 1.2.调用Excel模板导出数据 二.实现核心 #region 通过模板导出Excel文件/// <summary>/// 通过模板导 ...
- C#基于Npoi通过特性的方式导出简单数据到Excel或基于特性以及基于Excel模板导出数据到Excel以及从Excel中把数据导入到对象中
导出数据到Excel表格以及从Excel表格中读取数据是我们日常开发很多情况都会遇到的,这里或许只是导出一些简单的数据到excel,这里或许会按照一定的模板导出数据到excel,这里也可能需要从Exc ...
最新文章
- C++多态案例三-电脑组装
- mysql8.0递归_mysql8.0版本递归查询
- 存储引擎 boltdb 的设计奥秘?
- 培训协议与服务器有没有要求,上面说的是提供专业培训且规定了服务器和培训费以及违约金的问题。试用期辞职单位有没有权利追究违约金呢?- 法律快车法律咨询...
- partition by 和 group by
- 解决eclispe SVN 创建资源库报错,无法验证:SVN…… 504 Connection to server timed out
- 上海自考02290 c++语言程序设计试卷,上海交通大学工业自动化专业自考本科招生简章...
- 如何用七牛云上传音乐生成外链
- 强化学习中的基础概念和术语——spinning up文档翻译
- 网易云音乐APP(基于APICloud平台)
- 如何在供应链金融中防范风险?
- java正则表达式匹配任意中文_java匹配中文的正则表达式
- BeanCopier对象复制学习
- gr-osmosdr的安装
- AI图像识别遇上对抗性图像竟变“瞎子”
- 服务器散热风扇的制作流程,散热风扇生产操作工艺--制作流程
- 【LeetCode Python实现】ZJ27 字典树
- 3.1selenium自动化测试基本操作
- 采用两阶段Faster RCNN算法,引入light head的思想
- 视频教程-清华-尹成老师-java基础-Day2-Java