Jett+Spring MVC实现Excel导出
来源:互联网 发布:金猪报喜源码下载 编辑:程序博客网 时间:2024/05/01 05:12
接上文,由于本人在使用Jxls进行Excel导出时遇到数据遍历时Shift Row的格式问题无法解决,同时项目又较为紧张,于是尝试了使用Jett,幸好该框架基本能满足本人的需求,同时感觉各项功能的支持也不错,于是转而使用Jett。
初识Jett
模版制作
如下为制作好的模版,使用${}来标识我们需要填充的数据。【A4:D4】处使用<jt></jt>
遍历一个集合,我们对集合的每个元素取名为e
,每个元素的又可以使用${e.属性}
来进行获取
包依赖
我们使用Maven来进行包依赖管理
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version></dependency><dependency> <groupId>net.sf.jett</groupId> <artifactId>jett-core</artifactId> <version>0.9.1</version></dependency>
注意
使用Maven的 maven-resources-plugin 插件管理 resources 时,Maven会对模版进行转码处理,因此需要对xls格式的文件进行过滤,使其不处理。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <configuration> <nonFilteredFileExtensions> <nonFilteredFileExtension>pdf</nonFilteredFileExtension> <nonFilteredFileExtension>swf</nonFilteredFileExtension> <nonFilteredFileExtension>data</nonFilteredFileExtension> <nonFilteredFileExtension>xls</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin> </plugins></build>
数据填充
try (InputStream is = AppTest.class.getClassLoader().getResourceAsStream("template.xls")) { try (OutputStream os = new FileOutputStream("output.xls")) { Map<String, Object> model = new HashMap<>(); model.put("report_year", 2015); model.put("report_month", 8); List<Employee> userList = generateSampleEmployeeData(); model.put("employees", userList); Workbook workbook = new ExcelTransformer().transform(is, model); workbook.write(os); } catch (IOException | InvalidFormatException e) { e.printStackTrace(); }} catch (IOException e) { e.printStackTrace();}
效果展示
与Spring MVC结合
编写View
我们继承Spring提供的 AbstractView 抽象类。
package com.closer.jett.common;import net.sf.jett.transform.ExcelTransformer;import org.apache.poi.ss.usermodel.Workbook;import org.springframework.web.servlet.view.AbstractView;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.Map;/** * JettExcelView * Created by Zhang Jinlong on 2015/11/4. */public class JettExcelView extends AbstractView { private static final String CONTENT_TYPE = "application/vnd.ms-excel"; private String templatePath; private String exportFileName; public JettExcelView(String templatePath, String exportFileName) { this.templatePath = templatePath; if (exportFileName != null) { try { exportFileName = URLEncoder.encode(exportFileName, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } this.exportFileName = exportFileName; setContentType(CONTENT_TYPE); } @Override protected void renderMergedOutputModel( Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { try (InputStream is = getClass().getClassLoader().getResourceAsStream(templatePath)) { response.setContentType(getContentType()); response.setHeader("content-disposition", "attachment;filename=" + exportFileName + ".xls"); ServletOutputStream os = response.getOutputStream(); Workbook workbook = new ExcelTransformer().transform(is, model); workbook.write(os); } }}
请求处理
@RequestMapping(value = "/report")public ModelAndView export() { Map<String, Object> model = new HashMap<>(); model.put("report_year", 2015); model.put("report_month", 8); List<Employee> userList = generateSampleEmployeeData(); model.put("employees", userList); return new ModelAndView(new JettExcelView("template.xls", "output"), model);}
最后
这里只是写了一个简单的例子,Jett还有很多对Excel导出的用法,这里不一一细说,详细可以查阅官网Jett
源码
0 0
- Jett+Spring MVC实现Excel导出
- Jxls+Spring MVC实现Excel导出
- Jxls+Spring MVC实现Excel导出
- Jxls+Spring MVC实现Excel导出
- spring mvc 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring mvc 导出Excel
- Spring MVC 导出EXCEL
- Spring mvc 下Excel导出
- Spring mvc进行Excel导出
- Spring mvc 下导出Excel文件
- spring mvc 条件查询导出excel
- spring mvc 导出Excel乱码问题解决办法。
- ubuntu下安装opencv 读取摄像头
- 2016年3月22日 14:48:59
- 类才有设计模式?用方法不行么?
- Android-->UDP协议的Socket数据传输
- 存储过程基本概念和操作
- Jett+Spring MVC实现Excel导出
- 本人用过的三方库
- jQuery中$(document).ready(function(){})函数的作用
- Android NotificationManager 和Notification的使用总结
- spark shuffle
- Android学习文章推荐
- UIScrollView 基本属性
- Android Studio的使用——引入库如:引入PullToRefresh的library
- HTML笔试题大全