java列表下载

java列表文件下载
这几天做列表下载功能,写在这里大家可以看一下

首先是Controller类

//ApplyTradeCancelDTO.tradeConfirmIn queryTradeBean查询列表参数
@RequestMapping(value = "/confirm/excel", method = RequestMethod.POST)
    public void excel(@RequestBody ApplyTradeCancelDTO.tradeConfirmIn queryTradeBean, HttpServletResponse response) throws Exception {
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        response.setHeader("Content-Disposition", "attachment;filename=applyTrade.xls");
        ServletOutputStream out = response.getOutputStream();
        //登录用户
        queryTradeBean.setOpId(getOpId());
        tradeService.setTradeConfirmExcel(queryTradeBean, out);
        IoUtil.close(out);
    }

public void setTradeConfirmExcel(ApplyTradeCancelDTO.tradeConfirmIn queryTradeBean, ServletOutputStream out) {
		//根据参数查询要导出的列表
        PageQuery tradeConfirm = confirmApplyTradeDao
                .findTradeConfirm(queryTradeBean.getPageNum(), queryTradeBean.getPageSize(), queryTradeBean);
        //由于项目的标题title是从数据库查询出来的,这里可以换成你的,格式[{"code":"显示字段","name":"显示字段名称"},{"code":"显示字段","name":"显示字段名称"}]
        List list = sysOperatorService.getParsedOperatorSetting(queryTradeBean.getOpId(), D.operatorSettingFuncNo.TRADE_CONFIRM_EXCEL);
        //解析标题
        Map columns = ExcelTool.getColumns(list);
        //导出
        ExcelTool.export(columns, ExcelTool.dataFilter(columns, tradeConfirm.getList()), out);
    }

public static Map getColumns(List list) {
        Map columns = Maps.newHashMap();
        list.forEach(i -> {
            if (D.Switch.ON.equals(i.getCheck())) {
                columns.put(i.getCode(), i.getName());
            }
        });
        return columns;
    }
/**
     * 使用用户自定义表头-生成文件-写入输出流
     *
     * @param columns 表头
     * @param rows    数据
     * @param out     输出流
     */
public static void export(Map columns, List rows, ServletOutputStream out) {
        ExcelWriter writer = ExcelUtil.getWriter();
        columns.forEach((k, v) -> {
            writer.addHeaderAlias(k, v);
        });
        writer.write(rows, true);
        writer.flush(out);
        writer.close();
    }

/**
     * 导出excel表格
     *
     * @param columns
     * @param list
     * @return
     */
    public static List> dataFilter(Map columns, List list) {
        Set keys = columns.keySet();
        List> res = Lists.newArrayList();
        list.forEach(i -> {
            Map map = Maps.newHashMap();
            BeanUtil.beanToMap(i, map, false, new Editor() {
                @Override
                public String edit(String s) {
                    return keys.contains(s) ? s : null;
                }
            });
            res.add(map);
        });
        return res;
    }

你可能感兴趣的:(java,java,excel)