VUE+java实现:Excel导出功能前后端代码

在很多时候,我们页面的表格需要我们导出,

1:前端代码

(1):前端导出方法:

const fileDownload = {
  // 获取数据列表
  exportExcel(reqUrl, params, downloadFileName) {
    request({
      baseURL: baseUrl,
      url: reqUrl,
      method: 'get',
      responseType: 'arraybuffer', //必须要加上,转为blob类型
      params: params
    }).then(res => {
      const a = document.createElement('a')
      const blob = new Blob([res], {type: 'application/octet-stream'})
      const objectUrl = URL.createObjectURL(blob)
      a.setAttribute('href', objectUrl)
      a.setAttribute('download', downloadFileName)
      a.click()
    })
  }
}

export {fileDownload}

我们在这边写一个方法,等我们后面用的时候直接调用这个方法就可以了;

(2):我们需要导出的时候,直接引用:

//导出Excel
      exportHandle() {
        let params = {
          startTime:this.dataForm.shiftData[0],
          endTime:this.dataForm.shiftData[1],
          groupCode: this.dataForm.groupCode,
          shiftCode:this.dataForm.shiftCode,
        }
        console.log(params)
        console.log(params.startTime);
        console.log(params.endTime);
        console.log(params.shiftCode);
        console.log(params.groupCode);
        fileDownload.exportExcel('/api/CostAuxiliarySavingsController/exportExcel', params, '原料日节超表.xls')
      },

(3):表格:

 

 

2:后端代码:

@RequestMapping("/exportExcel")
    @ResponseBody
    public void exportExcel(@RequestParam Map<String,Object> params, HttpServletResponse response) {
        String startTime = MapUtil.getStr(params, "startTime");
        String endTime = MapUtil.getStr(params, "endTime");
        String groupCode = MapUtil.getStr(params, "groupCode");
        String shiftCode = MapUtil.getStr(params, "shiftCode");
        QueryWrapper<CostAuxiliarySavingEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge(!StringUtil.isEmpty(startTime),CostAuxiliarySavingEntity.COL_SHIFT_DATE,startTime);
        queryWrapper.le(!StringUtil.isEmpty(endTime),CostAuxiliarySavingEntity.COL_SHIFT_DATE,endTime);
        queryWrapper.eq(!StringUtil.isEmpty(groupCode),CostAuxiliarySavingEntity.COL_GROUP_CODE,groupCode);
        queryWrapper.eq(!StringUtil.isEmpty(shiftCode),CostAuxiliarySavingEntity.COL_SHIFT_CODE,shiftCode);
        List<CostAuxiliarySavingEntity> list = costAuxiliarySavingService.list(queryWrapper);
        ExcelWriter excelWriter = ExcelUtil.getWriter();
        List<List<Object>> lists = new ArrayList<>();


        List<Object> titleRow = new ArrayList<>();
        titleRow.add("日期");
        titleRow.add("班次");
        titleRow.add("产品全名");
        titleRow.add("线数");
        titleRow.add("物料种类");
        titleRow.add("入库包数");
        titleRow.add("入库件数");
        titleRow.add("包转吨折吨系数");
        titleRow.add("入库产量(T)");
        titleRow.add("单吨理论耗用量");
        titleRow.add("理论耗用量");
        titleRow.add("损耗率");
        titleRow.add("实际耗用量");
        titleRow.add("节超量");
        titleRow.add("单价(元)");
        titleRow.add("标准金额");
        titleRow.add("实际金额");
        titleRow.add("节超金额");

        excelWriter.writeRow(titleRow);
        excelWriter.merge(0, 1, 0, 0, "日期", false);
        excelWriter.merge(0, 1, 1, 1, "班次", false);
        excelWriter.merge(0, 1, 2, 2, "产品全名", false);
        excelWriter.merge(0, 1, 3, 3, "线数", false);
        excelWriter.merge(0, 1, 4, 4, "物料种类", false);
        excelWriter.merge(0, 1, 5, 5, "入库包数", false);
        excelWriter.merge(0, 1, 6, 6, "入库件数", false);
        excelWriter.merge(0, 1, 7, 7, "包转吨折吨系数", false);
        excelWriter.merge(0, 1, 8, 8, "入库产量(T)", false);
        excelWriter.merge(0, 1, 9, 9, "单吨理论耗用量", false);
        excelWriter.merge(0, 1, 10, 10, "理论耗用量", false);
        excelWriter.merge(0, 1, 11, 11, "损耗率", false);
        excelWriter.merge(0, 1, 12, 12, "实际耗用量", false);
        excelWriter.merge(0, 1, 13, 13, "节超量", false);
        excelWriter.merge(0, 1, 14, 14, "单价(元)", false);
        excelWriter.merge(0, 1, 15, 15, "标准金额", false);
        excelWriter.merge(0, 1, 16, 16, "实际金额", false);
        excelWriter.merge(0, 1, 17, 17, "节超金额", false);
        //将数据绑定。。。
        if (CollectionUtil.isNotEmpty(list)) {
            for (CostAuxiliarySavingEntity costMaterialDailyEntity : list) {
                List<Object> rows = new ArrayList<>();
                rows.add(costMaterialDailyEntity.getShiftDate());
                rows.add(costMaterialDailyEntity.getShiftGroupName());
                rows.add(costMaterialDailyEntity.getProductName());//
                rows.add(costMaterialDailyEntity.getLine());
                rows.add(costMaterialDailyEntity.getMaterialType());
                rows.add(costMaterialDailyEntity.getInboundPackages());//
                rows.add(costMaterialDailyEntity.getInboundPieces());
                rows.add(costMaterialDailyEntity.getTonnageFactor());
                rows.add(costMaterialDailyEntity.getOutput());
                rows.add(costMaterialDailyEntity.getTheorecticalPerTon());//封箱胶
                rows.add(costMaterialDailyEntity.getConsumption());
                rows.add(costMaterialDailyEntity.getLossRate());
                rows.add(costMaterialDailyEntity.getActualConsumption());
                rows.add(costMaterialDailyEntity.getSavingExcess());
                rows.add(costMaterialDailyEntity.getPrice());
                rows.add(costMaterialDailyEntity.getStandardAmount());
                rows.add(costMaterialDailyEntity.getActualAmount());
                rows.add(costMaterialDailyEntity.getExceeingAmount());
                /**
                 * 注释:我们在前面添加数据的时候,只需要把我们需要的数据添加到里面去,
                 * 我们不需要的数据我们就不需要添加进去了,
                 * 不然在后面是没有表头的,在后面只有数据,记录:
                 */
                lists.add(rows);
            }
        }
        excelWriter.write(lists);
        ServletOutputStream out;
        try {
            String filename = URLEncoder.encode("辅料日节超表", "utf-8");
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
            out = response.getOutputStream();
            excelWriter.flush(out, true);
            // 关闭writer,释放内存
            excelWriter.close();
            IoUtil.close(out);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值