生成excel文件

来源:互联网 发布:地理信息平台软件 编辑:程序博客网 时间:2024/04/29 07:51

使用ireport工具

SupplierCountController

 /**     * 下载     *      * @param servletResponse     * @see [相关类/方法](可选)     * @since [产品/模块版本](可选)     */    @SuppressWarnings({ "unchecked", "rawtypes" })    @Override    public void downloadSupplierResume(HttpServletResponse servletResponse, List<Map<String, Object>> dataMapList) {        if (null == dataMapList || dataMapList.isEmpty()) {            return;        }        // 模板        String classesPath = FileExportServiceImpl.class.getClassLoader().getResource("/").getPath();        // 报表report模板文件        File reportFile = new File(classesPath + "/ireport/supplierResumeReport.jrxml");        if (!reportFile.exists()) {            LOGGER.error(classesPath + "/ireport/supplierResumeReport.jrxml" + "模板文件不存在");        } else {            FileInputStream parentReportFis = null;            JasperPrint jasperPrint = null;            JasperReport jasperReport = null;            ServletOutputStream printWriter = null;            JRExporter jrExporter = null;            try {                // 根据拼装的模板文件路径读取模板文件                parentReportFis = new FileInputStream(reportFile);                // 从文件输入流中解析模板文件                jasperReport = JasperCompileManager.compileReport(parentReportFis);                String supplierName;                List<Map<String, Object>> dataList;                List<Map<String, Object>> emptyList = new ArrayList<Map<String, Object>>();                Map<String, Object> emptyMap =  new HashMap<String, Object>();                emptyMap.put("resumeResult", " ");                emptyMap.put("recommendSource", " ");                emptyMap.put("sourceCode", " ");                emptyMap.put("gwName", " ");                emptyMap.put("uploadTime", " ");                emptyList.add(emptyMap);                List<JasperPrint> jpList = new ArrayList<JasperPrint>();                List<String> nameList = new ArrayList<String>();                if (dataMapList.isEmpty()) {                    dataMapList.add(new HashMap<String, Object>());                }                for (Map<String, Object> tempMap : dataMapList) {                    if (null == tempMap || tempMap.isEmpty()) {                        continue;                    } else {                        supplierName = String.valueOf(tempMap.get("supplierName"));                        dataList = (List<Map<String, Object>>) tempMap.get("dataList");                        if (null == dataList || dataList.isEmpty()) {                            dataList = emptyList;                        }                        // 向解析过的模板中填充数据                        jasperPrint = JasperFillManager.fillReport(jasperReport, tempMap, new JRBeanCollectionDataSource(dataList));                        jpList.add(jasperPrint);                        nameList.add(supplierName);                    }                }                // 导出excel                jrExporter = new JRXlsExporter();                // 设置导出的文件名称                jrExporter.setParameter(JRXlsExporterParameter.SHEET_NAMES, nameList.toArray(new String[nameList.size()]));                // 设置导出对象 需要到处的 已经解析过、填充过数据的模板                if (jpList.size() > 1) {                    jrExporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jpList);                } else if (jpList.size() > 0) {                    jrExporter.setParameter(JRExporterParameter.JASPER_PRINT, jpList.get(0));                }                ByteArrayOutputStream oStream = new ByteArrayOutputStream();                jrExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);                jrExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");                jrExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); // 删除记录最下面的空行                jrExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); //                // 删除多余的columnHeader                jrExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); // 显示边框                jrExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);                // 初始化excel导出对象                jrExporter.exportReport();                // 设置页面不缓存                servletResponse.reset();                servletResponse.setContentType("application/ms-excel;charset=UTF-8");                servletResponse.setHeader("Content-Disposition", "attachment; filename=" + new String("供应商简历报表".getBytes("UTF-8"), "ISO-8859-1") + ".xls");                printWriter = servletResponse.getOutputStream();                byte[] bytes = oStream.toByteArray();                servletResponse.setContentLength(bytes.length);                if (bytes != null && bytes.length > 0) {                    // 把生成excel临时文件从缓存中写入输出流中                    printWriter.write(bytes, 0, bytes.length);                    printWriter.flush();                    // printWriter.close();                }            } catch (Exception e) {                e.printStackTrace();            } finally {                if (null != parentReportFis) {                    try {                        parentReportFis.close();                    } catch (IOException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }            }        }    }


0 0
原创粉丝点击