继上次report的demo后,还在继续做着report方面的research,今天主要是实现了通过javabean datasource填充chart图表,通过webservice下载pdf格式的报表。

开始这一段快乐之旅吧,首先我在包下定义了两个类分别是Student和Mark,Student类下有三个属性,他们分别是

private String name;
private String number;
private List<Mark> mark;

Mark类下定义了两个属性

private String name;
private double mark;

另外写了一个函数去获取student的列表List,这将是填充JavaBean的数据源

public List<Student> getBeanData(){
List<Student> listStudent = new ArrayList<Student>();
Student student = new Student();
student.setName("cheng");
student.setNumber("01"); List<Mark> listMark = new ArrayList<Mark>();
listMark.add(new Mark("销售", 100));
listMark.add(new Mark("IT", 139));
listMark.add(new Mark("s", 110.6));
listMark.add(new Mark("d", 120.4));
listMark.add(new Mark("e", 120)); student.setMark(listMark);
listStudent.add(student);
return listStudent;
}

设计report chart报表


最后的任务是写webservice,打印出报表,贴主要的代码实现,有一些函数在上一篇文章中已经实现

public List<Student> getBeanData(){
List<Student> listStudent = new ArrayList<Student>();
Student student = new Student();
student.setName("cheng");
student.setNumber("01"); List<Mark> listMark = new ArrayList<Mark>();
listMark.add(new Mark("销售", 100));
listMark.add(new Mark("IT", 139));
listMark.add(new Mark("s", 110.6));
listMark.add(new Mark("d", 120.4));
listMark.add(new Mark("e", 120)); student.setMark(listMark);
listStudent.add(student);
return listStudent;
} //javabean
@Path("download/chart")
@Produces(MediaType.TEXT_PLAIN)
@Transactional
public String downloadReportByJavaBean(@Context HttpServletRequest req , @Context HttpServletResponse res) throws Exception{
String designFilePath = req.getSession().getServletContext().getRealPath("/jasper") +
File.separator + "chartreport.jrxml";
File designFile = new File(designFilePath); if(designFile.exists()){
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(getBeanData());
JasperReport jasperReport = null;
JasperDesign design = JRXmlLoader.load(designFile);
jasperReport = JasperCompileManager.compileReport(design); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null,dataSource);
XLSReportProcess process = new XLSReportProcess();
process.exportWebReport(ReportProcess.Type.pdf, res, jasperPrint , "chart.pdf"); }
return "success";
}

最后实现的效果是通过webservice自动下载pdf文档,内容显示

jasperreport 通过javabean datasoource实现chart的报表的更多相关文章

  1. JasperReport报表开发(一)--原理介绍

    1. JasperReport介绍 JasperReport 是一个开源的Java报表引擎,它不像其他的报表工具,例如Crystal报表是基于Java的,没有自己的表达式语法.Jasper Repor ...

  2. JasperReports报表数据源10

    数据源的结构数据容器.同时生成报告,Jasper报表引擎获得来自数据源的数据.数据可以从数据库,XML文件,对象数组和集合中的对象来获得.我们将在本章填充报告所看到的fillReportXXX()方法 ...

  3. JasperReport框架使用教程(附带常见空白页问题说明)

    概述与安装使用 1. PDF报表概述 概述 ​ 在企业级应用开发中,报表生成.报表打印下载是其重要的一个环节.在之前的课程中我们已经学习了报表中比较重要的一种:Excel报表.其实除了Excel报表之 ...

  4. salesforce 零基础学习(二十六)自定义图表chart简单介绍(使用apex和VF实现)

    chart在报表中经常使用到,他可以使报表结果更加直观的展现给用户.salesforce支持VF和apex代码来更好的展示chart. chart分类:常用的图表样式有饼状图,柱状图,折线图,条形图, ...

  5. Java注解(二):实战 - 直接使用对象列表生成报表

    通过对Java注解(一):介绍,思想及优点学习了解,相信大家对Java注解有一定程度的了解,本篇文章将实战项目中的应用来加深对Java注解的了解. 本实例实现根据指定字段的JavaBean,生成对应列 ...

  6. 使用JQuery结合HIghcharts实现从后台获取JSON实时刷新图表

    项目做了一个报表,可以实时的观察呼叫中心的电话访问量,之前的版本是使用JFreechart做的,使用一段时间后出现内存溢出,服务器的内存使用量会变得很大,所以改用Ajax前台加载数据的方式实现实时报表 ...

  7. Jasperreport5.6.9-----1

    Jasperreport5.6.0生成PDF 最近项目中需要生成报表,先是看了下itext,觉得还可以,但是如果数据字段多的话,不太灵活.所以后来看了下ireport,觉得还可以,下面简单说一下它们: ...

  8. salesforce

    salesforce&apex salesforce开发的小心得 salesforce零基础学习(七十七)队列的实现以及应用 摘要: 队列和栈简单的区别为栈是后进先出,队列是先进先出.队列也是 ...

  9. Create the first sql server 2016 mobile report;创建 第一个 sqlserver 2016 Mobile report

    在微软收购了datazen之后,sqlserver2016 集成了mobilereport,mobile report 基于html5,兼容各类主流浏览器,之前ssrs2008 R2中很多chart类 ...

随机推荐

  1. 216. 组合总和 III

    216. 组合总和 III 题意 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的 ...

  2. 简单的php自定义错误日志

    平时经常看php的错误日志,很少有机会去自己动手写日志,看了王健的<最佳日志实践>觉得写一个清晰明了,结构分明的日志还是非常有必要的. 在写日志前,我们问问自己:为什么我们有时要记录自定义 ...

  3. win7 64位安装pywin32

    先安装pywin32-218.win-amd64-py3.4.exe文件: 安装完成后,用CMD管理员模式进入\Python34\Scripts\目录 输入pywin32_postinstall.py ...

  4. Codeforces Round #357 (Div. 2) E. Runaway to a Shadow 计算几何

    E. Runaway to a Shadow 题目连接: http://www.codeforces.com/contest/681/problem/E Description Dima is liv ...

  5. HDOJ 4414 Finding crosses 暴力!

    Finding crosses Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  6. 理解PHP数组的序列化和反序列化

    当我们想要将数组值存储到数据库时,就可以对数组进行序列化操作,然后将序列化后的值存储到数据库中.其实PHP序列化数组就是将复杂的数组数据类型转换为字符串,方便数组存库操作.对PHP数组进行序列化和反序 ...

  7. HDU 3487 Play with Chain (splay tree)

    Play with Chain Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. Automate Screen or Button Taps via Tasker : Simulating keypress events

    When using Tasker, sometimes we want to do some automation on screen e.g. screen or button taps. At ...

  9. More about STALL

    http://fx.damasgate.com/more-about-stall/ In other USB classes, a sender can indicate the end of a t ...

  10. HDU 2686 Matrix(最大费用流)

    Matrix Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...