导出

本文介绍了一个从前端到后端实现成品数据导出为Excel文件的完整过程。前端通过修改location.href的方式触发导出操作,后端使用@RequestMapping注解处理请求,通过Service获取成品数据并填充到Excel模板中,最终将生成的Excel文件返回给前端进行下载。文章详细展示了代码实现,包括异常处理和日志记录。

1.前端

location.href = urls.exportExg+"?namsNo="+namsNo+"&dataSource="+dataSource+"&chgTmsCnt="+chgTmsCnt;

2.后端代码

@RequestMapping(value = "/export_nams_exg",method = RequestMethod.GET)
public void exportNamsExg(HttpServletResponse response,String namsNo,Integer dataSource,Integer chgTmsCnt){
    try {
        Map<String,Object> data = new HashMap<>();
        /*获取成品数据*/
        if(EmsCommon.DATA_SOURCE_HIS==dataSource){
          List<NamsExgHis>  list = exgAppService.listNamsExgHis(namsNo,chgTmsCnt);
            data.put("list",list);
        }
        /*获取模板路径*/
        URL url =   ResourceUtils.getURL("classpath:exceltemplet/nams_exg_expt.xls");
        FileUtils.downloadTemplate(url.getPath(),data,"成品",response);
    }catch (Exception e){
        log.error(e.getMessage(),e);
        e.printStackTrace();
    }

工具代码

public static void downloadTemplate(String path, Map<String, Object> map, String fileName, HttpServletResponse response) {
    try {

        logger.info("路径:" + path);
        path = path.replaceAll("%20", " ");
        /*设置模板路径*/
        TemplateExportParams params = new TemplateExportParams(path);

        if (map == null) {
            map = new HashMap<>();
        }
        /*加载模板*/
        Workbook workbook = ExcelExportUtil.exportExcel(params, map);
        /*设置返回表头*/
        response.setCharacterEncoding("UTF-8");
        response.setHeader("content-Type", "application/vnd.ms-excel");
        response.setHeader("Content-Disposition",
            "attachment;filename=" + URLEncoder.encode(fileName + ".xls", "UTF-8"));
        workbook.write(response.getOutputStream());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

3.导出excel模板

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值