springboot+poi+vue 导出excel数据表

5 篇文章 0 订阅

后端:springboot+poi

前端:vue

前端单纯使用ajax是不可行的,返回格式不支持

方法:

1.直接使用window.href下载

2.使用Blob导出

   @PostMapping("/exportMediUser")
   public void getMediUserList(HttpServletResponse response){
        log.info("导出excel");
        // list : "导出数据"
        exportExcel(list, response);
    }

    /**
     * 导出excel
     *
     * @param list
     * @return
     */
    public void exportExcel(List<Object> list, HttpServletResponse response) {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("患者管理表");
        int rowNum = 0;
        int cellNum = 0;
        HSSFRow row = sheet.createRow(rowNum);
        //创建单元格并设置单元格内容
        row.createCell(0).setCellValue("序号");
        row.createCell(1).setCellValue("患者姓名");
        row.createCell(2).setCellValue("性别");
        row.createCell(3).setCellValue("年龄");
        row.createCell(4).setCellValue("标签");
        row.createCell(5).setCellValue("日期");
        for (Object object : list) {
            cellNum = 0;
            HSSFRow currRow = sheet.createRow(++rowNum);
            MediUser mediUser = (MediUser) object;
            currRow.createCell(cellNum++).setCellValue(mediUser.getId());
            currRow.createCell(cellNum++).setCellValue(mediUser.getName());
            currRow.createCell(cellNum++).setCellValue(mediUser.getSex());
            currRow.createCell(cellNum++).setCellValue(mediUser.getAge());
            currRow.createCell(cellNum++).setCellValue(mediUser.getAnamnesis());
            HSSFCell dateCell = currRow.createCell(cellNum++);
            // 日期格式化
            CellStyle cellStyle = wb.createCellStyle();
            DataFormat format = wb.createDataFormat();
            cellStyle.setDataFormat(format.getFormat(MyDateUtils.dateTimePattern));
            dateCell.setCellStyle(cellStyle);
            dateCell.setCellValue(mediUser.getCreateTime());
        }
        //输出Excel文件
        try {
            response.setContentType("application/octet-stream");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + java.net.URLEncoder.encode("mediUser.xls", "UTF-8"));
            response.flushBuffer();
            wb.write(response.getOutputStream());
            wb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

vue: 
1、按钮调用下载接口
2、new Blob导出
PS:1、第一步请求接口时,注意要设置请求responseType为blob类型,否则下载后,显示格式错误,无法打开
2、new Blob请求是,注意修改type类型为application/vnd.ms-excel

引用:https://blog.csdn.net/weixin_40538702/article/details/109202026

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值