2021-02-01

poi导出excel表格

这是我在企业开发中使用的excel 导出,原因为新的平台并没有通用的导出excle文件工具类
前端
                this.form.line = this.lineIds.toString();
                if (this.form.startTime === ''||this.form.startTime === null) {
                    this.$notify({
                        title: '警告',
                        message: '请选择开始时间',
                        type: 'warning'
                    });
                    return;
                } else if (this.form.endTime === ''||this.form.endTime === null) {
                    this.$notify({
                        title: '警告',
                        message: '请选择结束时间',
                        type: 'warning'
                    });
                    return;
                }else if (this.form.projectId === ''||this.form.projectId === null) {
                    this.$notify({
                        title: '警告',
                        message: '请选择项目编号',
                        type: 'warning'
                    });
                    return;
                } else if (this.form.line === ''||this.form.line === null) {
                    this.$notify({
                        title: '警告',
                        message: '请选择产品线',
                        type: 'warning'
                    });
                    return;
                }
                outExsel(this.form).then(res => {
                    let url = window.URL.createObjectURL(res.data);
                    let link = document.createElement("a");
                    link.download = "EnergyReport.xlsx";
                    link.href = url;
                    link.click();
                    window.URL.revokeObjectURL(url);
                });
                console.info(res);
            },
export const outExsel = (data) => {
    return axios.request({
        url: '/api/v1/EnergyReport/outExsel',
        method: 'post',
        data:data,
        responseType: 'blob',
    })
};       
后端
/**
     *  导出
     * @param
     * @return
     */
    @RequestMapping(value = "/outExsel",  method = RequestMethod.POST)
    public void outExsel(  HttpServletResponse response,@RequestBody EnergyReport energyReport) throws IOException {
        energyReportService.outExsel(energyReport,response);
    }
 public void outExsel(EnergyReport energyReport, HttpServletResponse response) throws IOException {
      List<EneryReportMongo> energy = dpHistoryDAO.getEnergy(energyReportProc);
      ExcelWriter writer = null;
      OutputStream outputStream = response.getOutputStream();
      try {
          //添加响应头信息
          response.setHeader("Content-disposition", "attachment; filename=" + "EnergyReport.xlsx");
          //设置类型
          response.setContentType("application/msexcel;charset=UTF-8");
          //设置头
          response.setHeader("Pragma", "No-cache");
          //设置头
          response.setHeader("Cache-Control", "no-cache");
          //设置日期头
          response.setDateHeader("Expires", 0);
          //实例化 ExcelWriter
          writer = new ExcelWriter(outputStream, ExcelTypeEnum.XLSX, true);
          //实例化表单
          Sheet sheet = new Sheet(1, 0, EneryReportMongo.class);
          sheet.setSheetName("目录1");
          //输出
          writer.write(energy, sheet);
          writer.finish();
          outputStream.flush();
      } catch (IOException e) {
          e.printStackTrace();
      } finally {
          try {
              response.getOutputStream().close();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }

pom.xml 使用的是阿里的easyexcel 版本1.1.2

   <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>1.1.2-beat1</version>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值