说说如何使用 Jaspersoft Studio 设计你的第一张报表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说说如何使用 Jaspersoft Studio 设计你的第一张报表相关的知识,希望对你有一定的参考价值。
参考技术A1、选择报表模板
File -> New -> Jasper Report ,打开报表模板选择框:
Jaspersoft Studio 内置了一些报表模板供我们选择,也可以自定义我们自己的报表模板哦O(∩_∩)O~
这里我们选择 Coffee template ,然后点击 Next。
2、命名新的报表文件,并指定放置的路径:
点击 Next。
3、选择数据源:
在 Data Adapter 中,已经预安装了一些数据源:
这里我们选择 Sample DB - Database JDBC Connection,然后在右侧的框中,输入 SQL 语句:
点击 Next。
4、选择展示字段:
这里会执行刚才写的 SQL 语句,并把得到的所有字段都列在左侧列表中供选择,这里选择需要在报表中展示的字段(可双击选择或者使用中间的按钮):
选好后,点击 Next,会跳到【分组字段选择】,这个特性暂且不表,以后会说到,所以这里直接点 Next,最后点击 Finish。
至此,我们的第一张报表所需要的字段就添加成功咯:
Outline 中 点击【项目名称】-》Properties 中 点击 Edit query, filter and sort options:
在打开的数据源与查询对话框中,点击右上的 Read Fields ,读取更多的字段:
注意: 也可以在这里修改 SQL 语句来得到新的字段,但如果报表中已有的字段在新的字段集中不存在,那么必须手动把这些旧字段删除!
点击 OK 后,就配置好了新的字段集,它们会在 Outline 的 Fields 中列出来,以供使用:
在设计模式中,点击要删除的字段,按 Delete 就可以直接删除咯 O(∩_∩)O~
点击 preview 页签,就可以看到效果啦:
注意: 子报表与父报表是分别保存各自的文件中,所以如果在包含子报表的父报表中,进行修改、保存操作,是不会影响到子报表的!如果要一次性保存父子报表,可以在 Projects -> 勾选 Build Automatically。
File -> New -> Project,在 Wizards 中键入 “Jasper”(过滤出相关的内容):
选择 JasperReports Project,然后在接下来的对话框中输入项目名称,点击 Finish,项目文件夹就创建好咯。
在主界面左侧的 Project Explorer 中,就可以看到刚才我们新增的项目文件夹咯:
Jaspersoft studio工具(报表生成工具)之 设置PDF 的开发
JasperReport 导出 PDF 的设置
(用工具 Jaspersoft studio来定义模板)
在idea中项目的resources目录下要导入配置,文件在:D:Astudy软件语言Javajava就项目一13.saax-export_day13 3.资料和工具 3 中文字体
步骤
1.在工具里面生成PDF模板并且编译,把编译后的.jsaper文件拷贝进idea项目中
2.编写代码,实现数据填充
注意:数据填充 由三种方式
方式一,参数map填充
/** * 演示Map参数填充 * @param id * @throws Exception */ @RequestMapping("/exportPdf") public void exportPdf(String id) throws Exception { //1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test02_map.jasper"); //2.把数据填充到模板 /** * 参数一:需要填充的模板文件输入流 * 参数二:Map参数 * 参数三:Jasper的数据源 */ //进行Map参数填充 HashMap map = new HashMap<>(); //模板的参数名称和Map的key一致的 map.put("userName","小苍"); map.put("email","xc@itcast.cn"); map.put("companyName","字节跑动"); map.put("deptName","视频组"); JasperPrint print = JasperFillManager.fillReport(inputStream, map , new JREmptyDataSource()); //3.导出PDF文件 /** * 参数一:封装好模板数据的JasperPrint对象 * 参数二:输出的位置,response.getOutputStream() //输出在页面显示 */ JasperExportManager.exportReportToPdfStream(print,response.getOutputStream()); }
方式二,JDBC数据源填充
@Autowired private DataSource dataSource; /** * 演示JDBC数据源参数填充 * @param id * @throws Exception */ @RequestMapping("/exportPdf") public void exportPdf(String id) throws Exception { //1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test03_jdbc.jasper"); //2.把数据填充到模板 JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource.getConnection()); //3.导出PDF文件 /** * 参数一:封装好模板好数据的JasperPrint对象 * 参数二:输出的位置 */ JasperExportManager.exportReportToPdfStream(print,response.getOutputStream()); }
方式三,JavaBean数据源填充
/** * 演示List集合(JavaBean)数据源导出 * @param id * @throws Exception */ @RequestMapping("/exportPdf") public void exportPdf(String id) throws Exception { //1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test04_list.jasper"); //2.把数据填充到模板 List list = new ArrayList(); //注意: 必须遵守的规则:List的JavaBean的每个属性名称 和 模板的Filed名称 一致 for(int i=0;i<10;i++){ User user = new User(); user.setUserName("小苍"+i); user.setEmail("xc+"+i+"@itcast.cn"); user.setCompanyName("字节跑动"); user.setDeptName("视频组"+i); list.add(user); } //从而得到数据源 JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list); JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource); //3.导出PDF文件 /** * 参数一:封装好模板好数据的JasperPrint对象 * 参数二:输出的位置 */ JasperExportManager.exportReportToPdfStream(print,response.getOutputStream()); }
数据源 填充数据分为:JDBC数据源填充数据(数据库连接)、JavaBean填充数据(list集合
对于JDBC数据源,是在做PDF模板的时候就链接了数据库获取数据,再在代码里通过数据源创建连接对象从而填充
对于JaveBean数据源(又称为List集合填充),只是在PDF模板中填充空的数据,真正的数据还是在代码中填充
其实在java代码中无非就是三步
1.读取模板文件(.jasper) InputStream inputStream = session.getServletContext().getResourceAsStream("/jasper/test04_list.jasper(webapp下面的文件地址)");
2.把数据填充到模板
JasperPrint print = JasperFillManager.fillReport (inputStream, Map集合 , dataSource数据源);
填充就是在用数据源还是map集合的不同而分出的3中方法
如果是用了map集合,那数据源就得为空,JasperPrint print = JasperFillManager.fillReport (inputStream, Map集合 , new JREmptyDataSource());
如果用了数据源,那map集合就得为空,JasperPrint print = JasperFillManager.fillReport (inputStream, new HashMap<>() , 数据源);
在区分,①用JDBC数据源,那就是JasperPrint print = JasperFillManager.fillReport(inputStream, new HashMap<>() ,dataSource.getConnection());
记得在外面写上 @Autowired
private DataSource dataSource;
②用JavaBean数据源,那就是
//从而得到数据源
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
JasperPrint print = JasperFillManager.fillReport (inputStream, new HashMap<>() , dataSource);
3.pdf文件的显示或导出
①在浏览器显示
/** * 参数一:封装好模板好数据的JasperPrint对象 * 参数二:输出的位置 */
JasperExportManager.exportReportToPdfStream( print, response.getOutputStream());
②下载
* 参数:封装好模板好数据的JasperPrint对象
* 参数二:输出的位置
//设置下载框响应头
response.setHeader("Content-Disposition","attachment;filename=export.pdf"); /参数一是响应头,参数而,是附件和下载后的文件名
JasperExportManager.exportReportToPdfStream( print, response.getOutputStream()); //这一步同上
以上是关于说说如何使用 Jaspersoft Studio 设计你的第一张报表的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Jaspersoft Studio 与 UCanAccess 一起使用?
PDF报表Jasperreports+jaspersoft studio快速入门
Jaspersoft studio工具(报表生成工具)之 设置PDF 的开发
Jaspersoft Studio(报表设计器)中文乱码问题的解决方法