jasperreport+jaspersoft生成报表并集成到spring boot中
来源:互联网 发布:c 网络编程基础 编辑:程序博客网 时间:2024/05/18 00:58
最近项目搭建需要一个开源报表的架子,搜索的时候找到了帆软,虽然个人使用是免费,而且功能也很强大,但无奈项目强调开源只好放弃。
后来经同事推荐找到了jasperreport,网上整个搜了一遍,几乎全是jasperreport + ireport的文章。由于自己的电脑是win10,ireport装上之后怎么都无法运行,只好换了JasperSoft Studio。好在JasperSoft Studio和ireport使用差不多,找ireport的教程就可以了。
废话不多说立马开始:
1.生成jasper模板
用JasperSoft Studio生成模板,参考http://blog.csdn.net/wlwlwlwl015/article/details/51312853,这位博主写的很详细,虽然不是同一个软件,但是按钮差不太多,稍微找一下即可按照教程完成模板。
我这里连接的是MySQL,注意一点,jdbc驱动因为不自带,需要再连接的时候手动指定驱动jar包的位置。
上面是界面说明。可根据自己的数据库表自行设计
2.集成到项目中
springmvc
目前网上的例子大都采用了mvc,个人实验成功参考的文章为
http://blog.csdn.net/xht555/article/details/43409637
http://blog.csdn.net/xht555/article/details/50434772
第一个链接介绍了如何使用javabean为数据源生成报表,第二个链接解决了中文展示的问题。
只需要下载第二个链接中的附件即可包含全部代码,无需重新下载。
如果没有csdn积分下载可以留言给我发你一份
http://blog.csdn.net/xht555/article/details/49717653这个解决了多数据源的问题,可以参考
-----------------------------------------------------------------------------------------------------------------------
如果报了groovy相关的错,可以更新pom.xml
<dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.4.7</version></dependency>
itextasian-2.1.7.js2.jar两个文件,通过本地导入方式加到项目中。
关于中文问题可以看我最新的文章
jasper综合使用-javabean结合实际业务-解决PDF中文
-----------------------------------------------------------------------------------------------------------------------
研究完了上面2篇文章,即可对java的使用有了一定的了解,在这基础上进行下面的内容。
-----------------------------------------------------------------------------------------------------------------------
到目前为止成功了一半,因为项目是不会用到javabean的,还需要连数据库才行。网上搜了半天jdbc数据源
没有找到想要的结果。
/** * 返回iReport报表视图 * @param model * @return */@RequestMapping(value = "/report", method = RequestMethod.GET)public String report(Model model) {// 报表数据源JRDataSource jrDataSource = new JRBeanCollectionDataSource(JavaBeanPerson.getList());// 动态指定报表模板urlmodel.addAttribute("url", "/WEB-INF/jasper/MvcIReportExample.jasper");model.addAttribute("format", "pdf"); // 报表格式model.addAttribute("jrMainDataSource", jrDataSource);return "iReportView"; // 对应jasper-defs.xml中的bean id}
上面是javabean数据源的代码片段,这已经包含在上面下载的代码之中。在研究使用jdbc连接的时候,
http://antlove.iteye.com/blog/2149920(只参考ConnectionProvider.java这一段即可)这篇文章给了我一些思路,文章
里面的ConnectionProvider.java文件建立了数据连接,还需要将查询结果作为datasource给jasper。
依照文章创建好ConnectionProvider.java文件。
同时参考这篇文章http://www.yiibai.com/jasper_reports/jasper_report_data_sources.html的介绍知道了jdbc作为数据源
的实现,如下图:
之前的代码片段我们用到了JRBeanCollectionDataSource,这里我们要改变为JRResultSetDataSource(ResultSet resultSet),到了这一步两边连接上了,见如下代码:
package com.pes_soft.example;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.text.DateFormat;import java.util.Date;import java.util.Locale;import net.sf.jasperreports.engine.JRDataSource;import net.sf.jasperreports.engine.JRResultSetDataSource;import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.pes_soft.example.datasource.JdbcConnectionProvider;import com.pes_soft.example.model.JavaBeanPerson;/** * Handles requests for the application home page. */@Controllerpublic class HomeController {private static final Logger logger = LoggerFactory.getLogger(HomeController.class);private static final String queryStr = "打开jrxml文件找你的sql查询语句到这里";/** * Simply selects the home view to render by returning its name. */@RequestMapping(value = "/", method = RequestMethod.GET)public String home(Locale locale, Model model) {logger.info("Welcome home! The client locale is {}.", locale);Date date = new Date();DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);String formattedDate = dateFormat.format(date);model.addAttribute("serverTime", formattedDate );return "home";}/** * 返回iReport报表视图 * @param model * @return */@RequestMapping(value = "/report", method = RequestMethod.GET)public String report(Model model) {// 报表数据源JRDataSource jrDataSource = new JRBeanCollectionDataSource(JavaBeanPerson.getList());// 动态指定报表模板urlmodel.addAttribute("url", "/WEB-INF/jasper/MvcIReportExample.jasper");model.addAttribute("format", "pdf"); // 报表格式model.addAttribute("jrMainDataSource", jrDataSource);return "iReportView"; // 对应jasper-defs.xml中的bean id}/** * 返回iReport报表视图,支持PDF显示中文 * @param model * @return */@RequestMapping(value = "/reportChs", method = RequestMethod.GET)public String reportChs(Model model) {// 报表数据源JRDataSource jrDataSource = new JRBeanCollectionDataSource(JavaBeanPerson.getListChs());// 动态指定报表模板urlmodel.addAttribute("url", "/WEB-INF/jasper/MvcIReportChsExample.jasper");model.addAttribute("format", "pdf"); // 报表格式model.addAttribute("jrMainDataSource", jrDataSource);return "iReportView";}/** * 用jdbc为数据源,查询?表 * @param model * @return */@RequestMapping(value = "/jdbcUser", method = RequestMethod.GET)public String reportJdbcUser(Model model) {try {// 报表数据源Statement stmt = JdbcConnectionProvider.getConnection().createStatement();//JdbcConnectionProvider为前面建立的mysql连接文件ResultSet rs = stmt.executeQuery(queryStr);//执行query语句得到结果JRDataSource jrDataSource = new JRResultSetDataSource(rs);// 动态指定报表模板urlmodel.addAttribute("url", "/WEB-INF/jasper/?.jasper");//填入你的模板文件model.addAttribute("format", "pdf"); // 报表格式model.addAttribute("jrMainDataSource", jrDataSource);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return "iReportView";}}
如上,即完成了jdbc数据源的报表。
还有一些问题,sql语句本来在模板文件中有,不应该写到程序文件中,这里只是简单实现,没有考虑优化的问题。更简单的集成到springboot中来使用,见下一篇博客,http://blog.csdn.net/pspr2/article/details/72901673。
更多文章参阅http://blog.csdn.net/zhaodandan19910306/article/category/1347861
- jasperreport+jaspersoft生成报表并集成到spring boot中
- 如何将jasperreport集成到spring mvc中并展示报表内容
- jasperreport JAVA API集成到spring boot中
- 使用jasperreport生成报表
- JasperReport与Spring集成
- Spring boot创建bean并注入到spring 中
- jasperreport生成简单的报表
- 使用ireport+jasperReport报表生成
- Spring Boot集成JasperReports生成PDF文档
- Spring Boot 中集成 Spring Security
- 将润乾报表集成到开发环境中
- IReport+jasperReport制作报表并打印
- 41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】
- 41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】
- 使用ireport生成jasperreport报表模板
- java web 使用jasperReport 生成PDF报表
- iReport+JasperReport生成excle报表--入门
- Jaspersoft iReport 报表
- 微信奇葩问题
- Android Studio中jni初体验
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛部分题解
- 2017浙工大之江学院校赛K-数学
- 整理服务器防DDOS攻击方案
- jasperreport+jaspersoft生成报表并集成到spring boot中
- 【51Nod】1433 0和5
- Java实现-前序遍历和中序遍历构建二叉树
- java线程的创建和启动
- 算法训练:Binary Tree Maximum Path Sum
- lua protobuff 不支持嵌套修改protoc-gen-lua(记录)
- 认识JVM
- JBoss AS JBoss EAP 和wildfly
- 百度echatrs 异步加载数据