Java(Springmvc)报表小记之 JasperReports & iReport导出excel(超详细)
2020-01-14 14:40
1301 查看
在网上找了许多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://www.geek-share.com/detail/2713440331.html
可用可参考,有问题留言
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- jasperReports+iReport实现另存为导出excel超详细
- 【iReport+JasperReport】3.在Java工程中用jasper导出Excel报表
- Java报表小记之 JasperReports & iReport(转)
- 【iReport+JasperReport】2.在Java工程中利用jasper导出PDF报表
- Ireport,JAVA报表制作并导出(pdf、excel、word)
- Spring MVC+ Ireport 做统计报表,导出HTML、EXCEL等格式的文件,打印;
- iReport+JasperReports报表开发入门篇
- Jasperreport+iReport报表设计(二)通用导出页面
- jasperReports+ireport 报表制作流程
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- Java和poi导出excel报表
- java 导出 Excel 报表
- JasperReport报表技术导出PDF报表(使用IReport设计工具 )
- JAVA poi 导出为excel详细范例
- Java使用POI实现数据导出excel报表
- Java SpringMVC项目导出excel多种类对应工具类整理(util)
- jasperReports+ireport+java运用
- Java使用POI实现数据导出excel报表
- 一步一步学iReport + JasperReports(一) : 如何选择报表工具
- 使用ireport+jasperreports生成报表时需要注意的地方