Excel导出

前端(GET方式),如果参数有null,后端接收到的不是null而是字符串“null”,可能导致SQL逻辑错误,可以再控制层或者服务处处理一下

 window.location.href =request.baseURL+
       "/IntentListExport?isExpand="+this.selectCondition.isExpand+
       "&botName="+this.currentBotName+
       "&intent="+this.selectCondition.intent

controller

@GetMapping("/IntentListExport")
public void IntentListExport(Entity entity, HttpServletResponse response) throws IOException {
ExcelWriter writer=botExerciseSampleService.export(botExerciseSampleSelectCondition);
//out为OutputStream,需要写出到的目标流
response.setContentType("application/vnd.ms-excel;charset=utf-8");
Date date=new Date();
DateFormat format=new SimpleDateFormat("yyyyMMdd");
String fileName = "CheckBot_Release_Sample_"+botExerciseSampleSelectCondition.getBotName()+"_"+format.format(date)+"-"+ DateUtil.currentSeconds() + ".xls";
//CheckBot_Release_Auto Test_20210518-124009
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
ServletOutputStream out = response.getOutputStream();

writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
}

业务实现

public ExcelWriter export(BotExerciseSampleSelectCondition botExerciseSampleSelectCondition){
        ExcelWriter writer = ExcelUtil.getWriter();
        List<BotExerciseSample> result=botExerciseSampleMapper.findByCondition(botExerciseSampleSelectCondition);
        if (result.size()>65535){
            List<List<BotExerciseSample>> lists= ListUtils.partition(result,65535);
            for (int i=0;i<lists.size();i++){
                //设置表头
                setDataSheet(writer,lists.get(i),i,botExerciseSampleSelectCondition.getBotName());
            }
        }else {
            setDataSheet(writer,result,0,botExerciseSampleSelectCondition.getBotName());
        }
        return  writer;

    }
    private  void setDataSheet(ExcelWriter writer,List<BotExerciseSample> result,int index,String name){
        if (index==0){
            writer.renameSheet(name);

        }else {
            writer.setSheet(name+index);
        }
        writer.addHeaderAlias("bot_chname", "bot名称");
        writer.addHeaderAlias("intent", "意图");
        writer.addHeaderAlias("question", "问题");
        writer.addHeaderAlias("answer_text","文本回答");
        writer.addHeaderAlias("answer_picture_name", "图片回答");
        writer.addHeaderAlias("answer_link", "链接回答");
        writer.write(result, true);
    }

 

posted @ 2021-09-24 09:36  忙碌了一整天的L师傅  阅读(97)  评论(0编辑  收藏  举报