vue+springmvc导出excel数据

2018-06-27  本文已影响0人  风雨云

vue端处理

this.$http.get(this.service + '/user/excel',{responseType: 'blob'}).then(({data})=> {
      console.info(typeof data)
      var a = document.createElement('a');
      var url = window.URL.createObjectURL(data);
      a.href = url;
      a.download = '用户统计信息.xls';
      a.click();
      window.URL.revokeObjectURL(url);
    })

web端处理

      int total=userBsService.getCount(null);
    List<UserVo> list=userBsService.getList(null, 1, total);
    
    String fileName = new Date().getTime() + "";
    
    
     XSSFWorkbook wb=new XSSFWorkbook();
     
     Sheet sheet=wb.createSheet();
     Row row0=sheet.createRow(0);
     
     String titleName[] = {"用户账号", "充值总金额", "邀请总人数", "社群组"};//列名
     for(int i=0;i<titleName.length;i++){
         sheet.setColumnWidth(i, 10 * 512);  
         row0.createCell(i).setCellValue(titleName[i]);
     }
     
     int i=0;
     for(UserVo v:list){
         Row row=sheet.createRow(i+1);
         if(!StringUtils.isEmpty(v.getMobile())){
                row.createCell(0).setCellValue(v.getMobile());
            }else{
                row.createCell(0).setCellValue(v.getEmail());
            }
         
         row.createCell(1).setCellValue(BigDecimalUtil.outputConvert(v.getAmount()));
         row.createCell(2).setCellValue(v.getCounts());
         row.createCell(3).setCellValue(v.getGroups());
        i++;
     }
     ByteArrayOutputStream os = new ByteArrayOutputStream();
    try{     
         try {
            wb.write(os);
            wb.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
         byte[] content = os.toByteArray();
         InputStream is = new ByteArrayInputStream(content);

         response.reset();
         response.setContentType("application/vnd.ms-excel;charset=utf-8");
         response.setHeader("Content-Disposition", "attachment;filename="+ new String((fileName + ".xls").getBytes(), "iso-8859-1"));
         ServletOutputStream out = response.getOutputStream();
         BufferedInputStream bis = null;
         BufferedOutputStream bos = null;
         try {
             bis = new BufferedInputStream(is);
             bos = new BufferedOutputStream(out);
             byte[] buff = new byte[2048];
             int bytesRead;
             while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                 bos.write(buff, 0, bytesRead);
             }
         } catch (final IOException e) {
             throw e;
         } finally {
             if (bis != null)
                 bis.close();
             if (bos != null)
                 bos.close();
         }
     }catch (Exception e){
         
     }

    return null;
上一篇下一篇

猜你喜欢

热点阅读