Java POI 导出Excel postman 测试下载文件

1.准备:

        
            org.apache.poi
            poi
            4.0.0
            compile
        
        
            org.apache.poi
            poi-ooxml
            4.0.0
        

2.controller

/**
     * 新客短信促活统计-下载Excel
     *
     * @return
     */
    @ResponseBody
    @PostMapping("/total/download")
    public void getSmsMarketingTotalDownloadExcel(@RequestBody SmsMarketingQuery query, HttpServletResponse response) throws UnsupportedEncodingException {
        this.smsMarketingService.downloadExcel(query, response);
    }

3.service

    /**
     * 新客短信促活统计-下载Excel
     *
     * @param query    query
     * @param response response
     * @return Boolean
     * @throws UnsupportedEncodingException 异常
     */
    boolean downloadExcel(SmsMarketingQuery query, HttpServletResponse response) throws UnsupportedEncodingException;

4.impl

    @Override
    public boolean downloadExcel(SmsMarketingQuery query, HttpServletResponse response) throws UnsupportedEncodingException {
        List list = this.smsMarketingOrderMapper.findSmsMarketingOrderList(query);
        //导出文件名(后面会在公共类中加入导出时间)
        String outExcelName = query.getTheme();
        //sheet名称
        String excelName = "CollectionData";
        //第一行内容(列名)
        String[] excelHead = new String[]{"批次ID", "主题", "手机号", "是否进件", "是否放款"};
        //需要和列名对应的数据字段名
        String[] rowName = new String[]{"batchNo", "theme", "mobile", "isPurchase", "isLoan"};

        //将结果List转化为Json
        JSONArray jsonArray = new JSONArray(list);
        //初始化一个结果集
        List result = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            //获取json数组中的第一项
            JSONObject getJsonObj = jsonArray.getJSONObject(i);
            getJsonObj.put("batchNo", query.getBatchNo());
            getJsonObj.put("theme", query.getTheme());
            getJsonObj.put("mobile", getJsonObj.getString("mobile"));
            //获取需要修改的字段名并根据条件进行比较和更新
            if((int)getJsonObj.get("status") == 2){
                getJsonObj.put("isPurchase", "是");
                getJsonObj.put("isLoan", "是");
            }else if((int)getJsonObj.get("status") == 1){
                getJsonObj.put("isPurchase", "是");
                getJsonObj.put("isLoan", "否");
            }else {
                getJsonObj.put("isPurchase", "否");
                getJsonObj.put("isLoan", "否");
            }
            //更新后需要重新将更新后的内容重新插入List中,此时List的值不是对象,而是Json类型
            result.add(getJsonObj);
        }
        //调用导出公共方法
        OutExcelUtil.outExcel2007(outExcelName, excelName, rowName, excelHead, result, response);
        return true;
    }

5.mapper

    /**
     * 新客短信促活统计-下载Excel
     *
     * @param query query
     * @return SmsMarketingOrder
     */
    List findSmsMarketingOrderList(SmsMarketingQuery query);

6.mapper.xml

    
    

7.postman测试(中文文件名乱码,问题不大,暂没有解决请注意):

Java POI 导出Excel postman 测试下载文件_第1张图片

 

你可能感兴趣的:(Java后端代码)