Java(Springmvc)报表小记之 JasperReports & iReport导出excel(超详细)

在网上找了许多ireport的用法的教程,有一些写的乱七八糟,还有代码拷进去有的报红的地方,然后引用的东西也没放出来,各种不能用。这个应该是最详细的了,从安装到使用,但是它的java调用报表的代码有点问题,除了java代码其余都可参考。
https://www.cnblogs.com/HeXiaoZhou/p/8485100.html
接下来开始讲解
流程图:
在这里插入图片描述
流程解析:

第一步:填充文件
JasperPrint
     可以用JasperFillManager生成JasperPrint对象,jrprint文件,jrprint文件流
     该类的一个实例代表一个面向页面的文档,该文档可以查看,打印或导出为其他格式。
     当用数据填充报表设计时,引擎会生成此类的实例,并且可以通过网络进行传输,以序列化形式存储在磁盘上或导出为其他各种格式,例如PDF,HTML,XLS,CSV或XML。
 
第二步:设置excel属性
1. XlsReportConfiguration
   公共接口XlsReportConfiguration,扩展了ReportExportConfiguration,包含Excel导出器使用的设置的界面。

第三步:文件导出
1. JRXlsExporter
   继承于JRXlsAbstractExporter
   JRXlsExporter 是 jasperReport的Excel 导出器。如果要导出pdf,用JRPdfExporter类,还可以导出cvs,rtf,xml,docx,pptx,html等格式的文件。
   导出过程始终通过调用接口的exportReport()方法 来调用Exporter,并且此方法在调用时不接收任何参数。

2. ExporterInput和OutputStreamExporterOutput
   net.sf.jasperreports.export包下的接口,该包主要提供导出程序输入,导出程序输出和导出程序配置。输入开始之前,所谓的导出程序输入将提供导出程序可能需要的所有输入数据。

具体讲解JRXlsExporter导出器:

JRXlsExporter导出器
软件包net.sf.jasperreports.engine.export的描述
出口商输入:
导出程序的输入数据以一个或多个JasperPrint 对象的形式出现,这些对象必须与其他可选的导出设置一起导出为其他某种文档格式。这些 JasperPrint 对象可能已经在内存中,通过输入流来自网络或驻留在磁盘上的文件中。我们所需要的只是一个ExporterInput拥有必要输入数据的实例。

出口商输出:
具体取决于它们产生的输出类型,使用public void setExporterOutput(O exporterOutput) 来设置所有内置导出器的输出设置。
其他导出配置设置:
可以使用public void setConfiguration(C configuration)和 public void setConfiguration(RC configuration)从JRAbstractExporter父类继承的 其他导出配置设置传达给导出器 。第一种方法接受一个ExporterConfiguration参数,并为每个导出器应用设置。第二个接受ReportExportConfiguration并在批量导出中为每个导出的报告应用设置。

安装和使用可以参考开头给的链接,在本地生成jasper文件之后,然后用java代码去调用的话,我用的是springmvc调用的,上代码和原出处
首先是pom.xml依赖包:

pom.xml

<dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.sf.jasperreports</groupId>
      <artifactId>jasperreports</artifactId>
      <version>6.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.4.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.12</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>9.4.1212</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-jaxb-annotations</artifactId>
      <version>2.9.5</version>
    </dependency>

  </dependencies>

Controller层代码(每一块是什么含义请看下方原出处链接,我就不敲了)

 @RequestMapping("/excel")
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws JRException, IOException {
        try {
            Class.forName("org.postgresql.Driver");
            String url="jdbc:postgresql://连接信息:5432/数据库名";
            String username="连接名";
            String password="密码";
            try {
                Connection conn= DriverManager.getConnection(url,username,password);
                //传递参数
                Map<String,Object> rptParameters=new HashMap<>();
                //填充文件
                JasperPrint jasperPrint=JasperFillManager.fillReport("E:/ireport/table_test.jasper",rptParameters,conn);
                System.out.println(rptParameters.toString());
                System.out.println("jasperPrint:"+jasperPrint);
                //excel属性设置
                SimpleXlsxReportConfiguration conf=new SimpleXlsxReportConfiguration();
                //一页一个sheet
                conf.setOnePagePerSheet(Boolean.FALSE);
                //删除记录最下面的空行
                conf.setRemoveEmptySpaceBetweenRows(Boolean.FALSE);
                //显示边框,背景白色
                conf.setWhitePageBackground(Boolean.FALSE);
                //xls格式文件导出器
                JRXlsExporter exporter=new JRXlsExporter();
                exporter.setConfiguration(conf);
                //从数据库中返回的结果 输入项
                ExporterInput exporterInput=new SimpleExporterInput(jasperPrint);
                exporter.setExporterInput(exporterInput);
                //Excel文件  输出项
                OutputStreamExporterOutput exporterOutput=new SimpleOutputStreamExporterOutput("E:/ireport/table.xls");
                exporter.setExporterOutput(exporterOutput);
                exporter.exportReport();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

然后直接访问页面就可以在路径生成xls文件
代码出处:https://blog.csdn.net/yin767833376/article/details/77099618

可用可参考,有问题留言

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值