ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

ireport5.6.0安装不多说

安装完成后启动可能闪退,主要是ireport5.6.0需要jdk1.7才能运行,1.8就会闪退。

修改ireport jdk

修改 C:/Program Files (x86)/Jaspersoft/iReport-5.6.0/etc/ireport.conf (默认路径) 下

#jdkhome="/path/to/jdk"
jdkhome="C:/programs/Java/jdk1.7.0_71"

模版

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

① 对应代码中paramMap中的变量

② 对应代码中datas中的数据的名称

③ 计算数,需要注意计算类型

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

注意事项

  • 数据中有中文需要设置字体,否则可能打印不出来。

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

  • .jasper是.jrxml编译过后的文件

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

  • 数据源设置

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

java代码

public static void main(String[] args) {
        String exportType = "xlsx";
        String defaultTemplatePath = "D://report1.jasper";
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("usid", "test@test.cn");
        paramMap.put("usna", "张三");
        paramMap.put("curDate", DateUtil.date2String(new Date()));
        List<Map<String, ?>> datas = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            Map<String, Object> temp = new HashMap<>();
            temp.put("key1", "key----" + i);
            temp.put("val1", "val====" + i);
            temp.put("cnt", 1);
            datas.add(temp);
        }
        JRDataSource dataSource = new JRMapCollectionDataSource(datas);
        try {
            JasperPrint jasperPrint = JasperFillManager.fillReport(defaultTemplatePath, paramMap, dataSource);
            String targetFileName = "D://test_" + DateUtil.date2String(new Date(), DateUtil.yyyyMMddHHmmss) + "." + exportType;
            if ("pdf".equalsIgnoreCase(exportType)) {
                JasperExportManager.exportReportToPdfFile(jasperPrint, targetFileName);
            } else if ("xlsx".equalsIgnoreCase(exportType)) {
                JRXlsxExporter exporter = new JRXlsxExporter();
                SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
                configuration.setWhitePageBackground(true);
                configuration.setRemoveEmptySpaceBetweenRows(true);// 空行
                configuration.setRemoveEmptySpaceBetweenColumns(true);// 空列
                exporter.setConfiguration(configuration);
                // 设置输入项
                ExporterInput exporterInput = new SimpleExporterInput(jasperPrint);
                exporter.setExporterInput(exporterInput);
                // 设置输出项
                OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(targetFileName);
                exporter.setExporterOutput(exporterOutput);
                exporter.exportReport();
            }
            System.out.println("导出成功:" + targetFileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

效果预览

ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

原文 

https://segmentfault.com/a/1190000023143951

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址