数据源导出为Excel java后台代码整理

本文介绍了一个用于统计教学作业数据,并将其导出为Excel文件的方法。该过程包括获取数据、计算提交率与批改率,以及设置Excel表格格式等步骤。
 

//这里是取得数据源的

ReturnModel mm = statisticService.getTeaWorkInfoBySchForExcel(schoolId, bank, title, date1, date2);
 Map ob = (Map)mm.getData();
 List<Map> result = (List<Map>) ob.get("data");

 for(Map map:result){
     //如果应收作业为0,则提交率和批改率都为0
     int su = Integer.parseInt(map.get("submitCount").toString());//实收作业数
     if(map.get("shwCount").toString().equals("0")){
         map.put("subRate","0%");
         //map.put("completeRate","0%");
     }else{
         int sc = Integer.parseInt(map.get("shwCount").toString());//应收作业数
         map.put("subRate",(su*100/sc)+"%");//添加提交率
     }
     if(map.get("submitCount").toString().equals("0")){
         map.put("completeRate","0%");
     }else{
         int cp = Integer.parseInt(map.get("completeCount").toString());//批改人数
         map.put("completeRate",(cp*100/su)+"%");//添加批改率
     }

 }


//设置Excel表格的与数据源的属性字段所对应,需要导出哪些设置哪些
 String[] name1 = {"classes","displayName", "title", "thwCount", "objCount", "subCount", "shwCount", "submitCount", "completeCount","subRate","completeRate"};
 String[] name2 = {"班级","教师", "学科", "布置作业数", "客观题数", "主观题数", "应收作业", "实收作业", "批改人数","提交率","批改率"};
 int num = name1.length;
 // 声明一个工作薄
 HSSFWorkbook wb = new HSSFWorkbook();
 //声明一个单子并命名
 HSSFSheet sheet = wb.createSheet();
 //给单子名称一个长度
 sheet.setDefaultColumnWidth((short) 15);
 // 生成一个样式
 HSSFCellStyle style = wb.createCellStyle();
 //创建第一行(也可以称为表头)
 HSSFRow row = sheet.createRow(0);
 //样式字体居中
 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 //给表头第一行一次创建单元格
 HSSFCell cell;
 for (int i = 0; i < num; i++) {
     cell = row.createCell(i);
     cell.setCellValue(name2[i]);
     cell.setCellStyle(style);
 }

 List<Map> Data = result;

 //向单元格里填充数据
 for (int i = 0; i < Data.size(); i++) {
     row = sheet.createRow(i + 1);
     for (int j = 0; j < name1.length; j++) {
         String jjj = StringUtil.toString(Data.get(i).get(name1[j]));
         row.createCell(j).setCellValue(StringUtil.toString(Data.get(i).get(name1[j])));
     }
 }


 //这里是生成导出数据源的时间
String[] dd = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date()).split(" ");
 //表名根据当前时间的时、分、秒生成,如当前时间为100907秒,则表名为100907.xls
String d = dd[1].split(":")[0] + dd[1].split(":")[1] + dd[1].split(":")[2];

 // 清空response   在浏览器中以弹框的形式出现提示下载
 response.reset();
 // 设置responseHeader
 try {
     response.addHeader("Content-Disposition", "attachment;filename=" + new String(("学校详情表.xls").getBytes("UTF-8"), "ISO8859-1"));
 } catch (Exception ex) {

 }
 response.setContentType("application/octet-stream");
 try {
     wb.write(response.getOutputStream());
 } catch (Exception ex) {

 }
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值