美文网首页
vue+springmvc导出excel数据

vue+springmvc导出excel数据

作者: 风雨云 | 来源:发表于2018-06-27 09:09 被阅读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;

    相关文章

      网友评论

          本文标题:vue+springmvc导出excel数据

          本文链接:https://www.haomeiwen.com/subject/hbjmyftx.html