vue + springboot poi 实现excel模板导出 完整代码

  1. 有导入导出功能的时候,避免用户导入数据有误,提供了excel模板下载。用户直接在系统导出的excel模板中填写数据,再导入该excel。
  2. 例如下图excel 提供前后台所有导出代码
    在这里插入图片描述

在这里插入图片描述
3. 代码
3.1 前台
(1)按钮

    <el-button type='success' icon="el-icon-download" @click="downTemplate"> 模板下载
     </el-button>

(2) js方法

     downTemplate(){
                // 调用api接口  
                service.exportTemplate().then(
                    res => {
                        if (res.data) {
                            const content = res.data
                            const blob = new Blob([content]);
                            if ("download" in document.createElement("a")) {
                                const link = document.createElement("a");
                                // 文件名
                                link.download = "excel模板.xlsx"
                                link.style.display = "none"
                                link.href = URL.createObjectURL(blob)
                                document.body.appendChild(link)
                                link.click()
                                URL.revokeObjectURL(link.href)
                                document.body.removeChild(link)
                            } else {
                                navigator.msSaveBlob(blob, fileName)
                            }
                        }
                    }
                )
            };

(3)api接口

   exportTemplate: (date) => {
            return request({
                url:'/aaaa/exportTemplate',  // 路由
                method: 'post',
                ResponseType:'blob' // 这个不要写错
            })
        }

3.2 后台
1. controller层

    @GetMapping("exportTemplate")
    public void exportTemplate(HttpServletResponse response) throw Exception{
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String filename = URLEncoder.encode("导出excel模板的文件名称", "utf-8")
        response.setHeader("Content-disposition","attachment;filename = " + filename + ".xlsx")
        //  调用服务层接口
        aaaaservice.exportTemplate(response)
  1. service 接口层

     void exportTemplate(HttpServletResponse response)
    
  2. service实现层

     @Override
     public void exportTemplate(HttpServletResponse response){
         SXSSFWorkbook workbook = new SXSSFWorkbook(100);
         Sheet xssfSheet = workbook.createSheet("导出excel模板的文件名称");
         //    创建第一行
         Row row = xssfSheet.createRow(0);
         //  创建列(字段过多,建议使用循环)
         Cell xssfCell = row.createCell(0);
         xssfCell.setCellValue("姓名");
         Cell xssfCell = row.createCell(1);
         xssfCell.setCellValue("性别");
         Cell xssfCell = row.createCell(2);
         xssfCell.setCellValue("住址");
    
         String uuid = UUID.randomUUID().toString();
         // 设置列宽度自适应 
         for(int i=0; i<3; i++){
            xssfSheet.autoSizeColumn(i)
            xssfSheet.setColumWidth(i,xssfSheet.getColumnWidth(i)*7/4); // 可以自己调整
         }
         // 写excel文件 
         try{
             workbook.write(response.getOutputStream());
         }catch(IOException e){
             e.printStackTrace();
         }
     }
    
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值