zoukankan      html  css  js  c++  java
  • easypoi 导出(动态列表)

    @RequestMapping(value = "/output", method = RequestMethod.GET)
        public void outputExcel(HttpServletResponse response) throws IllegalAccessException {
            String fileName = "food-导出.xls";
    
            List<ExcelExportEntity> beanList = new ArrayList<ExcelExportEntity>();
            beanList.add(new ExcelExportEntity("类型", "type"));
            beanList.add(new ExcelExportEntity("名称", "name"));
    //        beanList.add(new ExcelExportEntity("名称(英文)", "nameEN"));
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    
            List<Food> foods = getFoods();
            for (Food item : foods) {
                list.add(objectToMap(item));
            }
    
            writeExcelToStream(fileName, beanList, list, response);
        }
    
    
    /**
         * 写入excel到流
         *
         * @param response
         * @param fileName
         */
        private <T> void writeExcelToStream(String fileName, List<ExcelExportEntity> entity, List<T> dtoLst, HttpServletResponse response) {
            try {
                // easyPoi操作excel
                Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entity, dtoLst);
                // 设置响应头
                response.setHeader("content-Type", "application/vnd.ms-excel;charset=UTF-8");
                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
                // 写入到流中
                ServletOutputStream outputStream = response.getOutputStream();
                workbook.write(outputStream);
                workbook.close();
                outputStream.close();
            } catch (Exception e) {
    //            log.error(e.getMessage());
                try {
                    response.setHeader("Content-type", "text/html;charset=UTF-8");
                    response.setCharacterEncoding("UTF-8");
                    PrintWriter pw = response.getWriter();
                    pw.write("导出文件异常!");
                } catch (Exception e1) {
    //                log.error(e1.getMessage());
                }
            }
        }
    
        public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
            Map<String, Object> map = new HashMap<>();
            Class<?> clazz = obj.getClass();
            System.out.println(clazz);
            for (Field field : clazz.getDeclaredFields()) {
                field.setAccessible(true);
                String fieldName = field.getName();
                Object value = field.get(obj);
                map.put(fieldName, value);
            }
            return map;
        }
  • 相关阅读:
    UVa 1354 天平难题 (枚举二叉树)
    广西邀请赛总结
    UVa 12118 检查员的难题 (dfs判连通, 构造欧拉通路)
    UVA
    Uva 127 "Accordian" Patience (模拟)
    UVA 10539 Almost Prime Numbers( 素数因子)
    HDU 1272 小希的迷宫(并查集)
    HDU 1213 How Many Tables (并查集)
    POJ 2236 Wireless Network(并查集)
    HDU 1233 还是畅通工程 ( Kruskal或Prim)
  • 原文地址:https://www.cnblogs.com/james641/p/14275751.html
Copyright © 2011-2022 走看看