首先,这是我对自己的需求而使用的逻辑,若有可以完美的地方方便告诉下小白。
apache的poi MAVEN
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependency>
为什么不用ajax呢?
JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型。所以就用js做个form表单请求
上代码()
1 function exportExcel(){ 2 var myurl="${context}/assetInLibrary/export"; 3 var form=$("<form>"); 4 form.attr("style","display:none"); 5 form.attr("method","post"); 6 form.attr("action",myurl); 7 $("body").append(form); 8 }
先上代码
1 public class ViewExcel extends AbstractExcelView { 2 3 private String[] titles; 4 5 //传入指定的标题头 6 public ViewExcel(String[] titles) { 7 this.titles=titles; 8 } 9 10 @Override 11 protected void buildExcelDocument(Map<String, Object> model, 12 HSSFWorkbook workbook, HttpServletRequest request, 13 HttpServletResponse response) throws Exception { 14 //获取数据 15 List<Map<String, String>> list = (List<Map<String, String>>) model.get("excelList"); 16 //在workbook添加一个sheet 17 HSSFSheet sheet = workbook.createSheet(); 18 sheet.setDefaultColumnWidth(15); 19 HSSFCell cell=null; 20 //遍历标题 21 for (int i = 0; i < titles.length; i++) { 22 //获取位置 23 cell = getCell(sheet, 0, i); 24 setText(cell, titles[i]); 25 } 26 //数据写出 27 for (int i = 0; i < list.size(); i++) { 28 //获取每一个map 29 Map<String, String> map=list.get(i); 30 //一个map一行数据 31 HSSFRow row = sheet.createRow(i+1); 32 for (int j = 0; j < titles.length; j++) { 33 //遍历标题,把key与标题匹配 34 String title=titles[j]; 35 //判断该内容存在mapzhong 36 if(map.containsKey(title)){ 37 row.createCell(j).setCellValue(map.get(title)); 38 } 39 } 40 } 41 //设置下载时客户端Excel的名称 42 String filename = new SimpleDateFormat("yyyy-MM-dd").format(new Date())+".xls"; 43 response.setContentType("application/vnd.ms-excel"); 44 response.setHeader("Content-disposition", "attachment;filename=" + filename); 45 OutputStream ouputStream = response.getOutputStream(); 46 workbook.write(ouputStream); 47 ouputStream.flush(); 48 ouputStream.close(); 49 } 50 51 }
在构造函数中传进来需导出的titles,也就是excel中的标题头,这个逻辑会有点麻烦,因为我是创建Map,让dao中查出来的数据根据我的Map(‘title’,'value')进行封装,且title要存在于传进来的titles中,剩下看源码就能明白
欢迎关注我的公众号“码上开发”,每天分享最新技术资讯、最优原创文章。关注获取最新资源
版权声明:本文为不会代码的小白原创文章,未经允许不得转载。
转载于:https://www.cnblogs.com/xswz/p/7257658.html
相关资源:SSM 下 Excel的导入导出