SpringMVC实现Excel导出

摘要:
1.导入jxls相关jar包  net.sf.jxlsjxls-core1.0.6  net.sf.jxls  jxls-reader  1.0.62.自定义ExcelTemplateView继承于AbstractView。

前言:SpringMVC携带数据到视图层通过的是View.class#render()方法,本文的Excel导出将通过扩展View的抽象类AbstractView配合JXLS来实现。

1. 导入jxls相关jar包

<dependency>
  <groupId>net.sf.jxls</groupId>
   <artifactId>jxls-core</artifactId>
   <version>1.0.6</version>
</dependency>
<dependency>
  <groupId>net.sf.jxls</groupId>
  <artifactId>jxls-reader</artifactId>
  <version>1.0.6</version>
</dependency>

2. 自定义ExcelTemplateView继承于AbstractView。重点是renderMergedOutputModel(),作用是将model中的数据合并到Excel模板中。

public class ExcelTemplateView extendsAbstractView {
  
/*(non-Javadoc)    * @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ protected void renderMergedOutputModel(Map<String, Object>model, HttpServletRequest request,
HttpServletResponse response)
throwsException {
//1. create workbook by template File template = ResourceUtils.getFile("classpath:/template" +templateExcelFile); Workbook workbook = WorkbookFactory.create(template); //2. transfer model data to workbook XLSTransformer transformer = newXLSTransformer(); transformer.transformWorkbook(workbook, model); //3. set disposition response.setHeader("Content-Disposition", "attachment; filename=download.xlsx"); //4. no cache here response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expire", 0); response.setContentType("application/vnd.ms-excel"); ServletOutputStream outputStream =response.getOutputStream(); workbook.write(outputStream); outputStream.flush(); logger.info("End exporting excel file: " + this.templateExcelFile); }
}

3. Controller调用

ModelAndView modelAndView = new ModelAndView(new ExcelTemplateView("template.xlsx"));
modelAndView.addObject("dataList", dataList);
return modelAndView;

4. Excel模板使用jexl表单式,有兴趣的同学可参考官网: http://jxls.sourceforge.net/

免责声明:文章转载自《SpringMVC实现Excel导出》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SwiperEgg.js 实现向服务器上传图片下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

excel下划线转驼峰公式

最近为了省事,决定从excel将表结构生成jquery.datatable的json对象结构,其中要把下划线转驼峰,如下: =LEFT(C251,1)&MID(SUBSTITUTE(PROPER(C251),"_",""),2,100)...

使用POI导出excel基础篇

最近搞了下POI导出Excel,听说很多次,却是第一次搞。 在pom.xml中引入依赖 <dependency>   <groupId>org.apache.poi</groupId>   <artifactId>poi</artifactId>   <version>3.10-FI...

java-response-乱码解决

(1)响应体设置文本 PrintWriter getWriter() 获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览   器端。 关于设置中文的乱码问题 原因:response缓冲区的默认编码是iso8859-1,此码表中...

Python之Scrapy爬虫框架 入门实例(一)

一、开发环境   1.安装 scrapy   2.安装 python2.7   3.安装编辑器 PyCharm 二、创建scrapy项目pachong   1.在命令行输入命令:scrapy startproject  pachong     (pachong 为项目的名称,可以改变)         2.打开编辑器PyCharm,将刚刚创建的项目pach...

HttpClient(二)HttpClient使用Ip代理与处理连接超时

前言 其实前面写的那一点点东西都是轻轻点水,其实HttpClient还有很多强大的功能: (1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等) (2)支持自动转向 (3)支持 HTTPS 协议 (4)支持代理服务器等 一、HttpClient使用代理IP 1.1、前言 在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及...

ajax()函数传值中文乱码解决方法介绍

jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 复制代码 代码如下: $.ajax({   dataType : ‘json',type : ‘POST',url : ‘http://localhost/test/test.do',data : {id: 1, type: ‘商品'},success : functio...