生成excel文件

使用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值