关注微信公众号 太平洋学习网 扫描二维码
最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

JXLS导出excel文件示例详解|poi excel模板导出

Javaweb 太平洋学习网 浏览 评论

本案例将采用JXLS导出excel文件,JXLS框架是一个模板生成excel的文件,在java excel文件导出方面比poi更加方便简单,下面我将使用jxls来导出excel数据,并通过浏览器下载excel文件,效果如图。

QQ截图20171228193949.jpg

下面我们来一起学习一下JXLS框架的使用吧,小编是将jxls整合springmvc使用的!

第一步:需要在pom.xml文件中导入jxls框架的maven jar包,我导入的是jxls-poi这一个,因为它是集成了java poi框架的,所以导入它,你也就可以完全无障碍的使用java poi来导入导出了。

<dependency>
	<groupId>org.jxls</groupId>
	<artifactId>jxls-poi</artifactId>
	<version>1.0.13</version>
</dependency>

第二步:我们要导出一个员工考核成绩的列表List<Exam>examList,Exam实体类代码如下:

public class Exam {
    private String username;
    private String deptName;
    private String paperName;
    private String typeName;	
    private String beginTime;
    private String endTime;
    private String score;
    //getter/setter....
}

第三步:我们开始也说了,jxls框架是一个模板生成excel文件的框架,因此在java导出excel文件方面,会比poi方便许多,但在导入excel文件似乎比较麻烦(这里不介绍),jxls框架导出excel文件之前,先要设置好导出模板,并在excel批注中使用了类似java jstl表达式的方式来遍历List<Exam>集合,如图:

QQ截图20171228201306.jpg

批注一,如图所示:

QQ截图20171228201713.jpg

批注二:如图所示:

QQ截图20171228201728.jpg


上面批注中的内容“jx:each(items="examList" var="exam" lastCell="G3")”中的items表示后台返回的examList集合,var表示examList集合里面的实体类元素,lastCell表示模板区域在A1到G3之间。

设置好模板之后将excel模板文件放在目录文件中,如下图所示:

QQ截图20171228202931.jpg

步骤三:从数据库中查找员工成绩的集合,并以excel浏览器下载的形式输出,springmvc后端代码如下,只提供关键部分代码,步骤很简单:

import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;

@GetMapping("/admin/examhistory/export")
public void exportExamList(HttpServletRequest request,HttpServletResponse response) {
	try {
		//数据库查询所有试卷成绩列表
		List<Exam> examList = examService.findAllExam();
		//获取模板文件路径
		String modelPath = request.getSession().getServletContext().getRealPath("/upload/excel/scoreModel.xls");
		//获取模板文件输入流
		FileInputStream in = new FileInputStream(new File(modelPath));
		//列表数据将存储到指定的excel文件路径
		FileOutputStream out = new FileOutputStream("target/scoreOutput.xls");
		//这里的context是jxls框架上的context,如顶部
		Context context = new Context();
		//将考试成绩列表参数放入context中
		context.putVar("examList", examList);
		//将List<Exam>列表数据按照模板文件中的格式生成到scoreOutput.xls文件中
		JxlsHelper.getInstance().processTemplate(in, out, context);
		
		//下面步骤为浏览器下载部分
		//指定数据生成后的文件输入流
		FileInputStream fileInputStream = new FileInputStream("target/scoreOutput.xls");
		//导出excel文件,设置文件名
		String filename = URLEncoder.encode("考试成绩列表.xls", "UTF-8");
		//设置下载头
		response.setHeader("Content-Disposition", "attachment;filename=" + filename);
		ServletOutputStream outputStream = response.getOutputStream();
		//将文件写入浏览器
		byte[] bys = new byte[fileInputStream.available()];
		fileInputStream.read(bys);
		outputStream.write(bys);
		outputStream.flush();
		outputStream.close();
	}catch (Exception e){
		e.printStackTrace();
	}

}

当我们在前端点击下载按钮的时候,就会开始下载excel文件了,jxls导出excel,并浏览器下载文件很简单吧!

如果有什么好的建议或意见,请关注“太平洋学习网”与我一起交流!

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/2017/1228/449.html

    与本文相关的文章