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<ApplyTradeCancelDTO.tradeConfirmOut> tradeConfirm = confirmApplyTradeDao
                .findTradeConfirm(queryTradeBean.getPageNum(), queryTradeBean.getPageSize(), queryTradeBean);
        //由於項目的標題title是從數據庫查詢出來的,這裏可以換成你的,格式[{"code":"顯示字段","name":"顯示字段名稱"},{"code":"顯示字段","name":"顯示字段名稱"}]
        List<SysOperatorDTO.setting> list = sysOperatorService.getParsedOperatorSetting(queryTradeBean.getOpId(), D.operatorSettingFuncNo.TRADE_CONFIRM_EXCEL);
        //解析標題
        Map<String, String> columns = ExcelTool.getColumns(list);
        //導出
        ExcelTool.export(columns, ExcelTool.dataFilter(columns, tradeConfirm.getList()), out);
    }

public static Map<String, String> getColumns(List<SysOperatorDTO.setting> list) {
        Map<String, String> 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<String, String> 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<Map<String, Object>> dataFilter(Map<String, String> columns, List<?> list) {
        Set<String> keys = columns.keySet();
        List<Map<String, Object>> res = Lists.newArrayList();
        list.forEach(i -> {
            Map<String, Object> map = Maps.newHashMap();
            BeanUtil.beanToMap(i, map, false, new Editor<String>() {
                @Override
                public String edit(String s) {
                    return keys.contains(s) ? s : null;
                }
            });
            res.add(map);
        });
        return res;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章