本案例将采用JXLS导出excel文件,JXLS框架是一个模板生成excel的文件,在java excel文件导出方面比poi更加方便简单,下面我将使用jxls来导出excel数据,并通过浏览器下载excel文件,效果如图。
下面我们来一起学习一下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>集合,如图:
批注一,如图所示:
批注二:如图所示:
上面批注中的内容“jx:each(items="examList" var="exam" lastCell="G3")”中的items表示后台返回的examList集合,var表示examList集合里面的实体类元素,lastCell表示模板区域在A1到G3之间。
设置好模板之后将excel模板文件放在目录文件中,如下图所示:
步骤三:从数据库中查找员工成绩的集合,并以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,并浏览器下载文件很简单吧!
如果有什么好的建议或意见,请关注“太平洋学习网”与我一起交流!