`
paper
  • 浏览: 75843 次
  • 性别: Icon_minigender_1
  • 来自: 郴州
社区版块
存档分类
最新评论

ireport4.5+javabean做饼图

 
阅读更多

    因为javaeye不好上图,所以全部打包在附件了。如果看到显示不了的图片可以按照顺序在附件额图片里面看到

    接到一个手机web报表开发的需求,用flash的报表试了一下,结果发现有些手机,有些浏览器看不了,只好用ireport试试生成图片格式的,测试通过。于是做了个饼图的小示例。

    当最新的的ireport4.5

 

1、傻瓜式的软件安装,就不说了

2、基础文件

几个源码文件

Pie.java

package com.chart.domain;

import java.io.Serializable;

public class Pie implements Serializable {

 
 private static final long serialVersionUID = 1804559352204689761L;
 private String name;
 private double money;

 public Pie() {
 }

 public Pie(String name, double money) {
  super();
  this.name = name;
  this.money = money;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public double getMoney() {
  return money;
 }

 public void setMoney(double money) {
  this.money = money;
 }

}

PieDataSource.java

package com.chart.source;
import java.util.ArrayList;
import java.util.List;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

import com.chart.domain.Pie;

public class PieDataSource implements JRDataSource {

 private int index;
 private List<Pie> dataList;

 public PieDataSource() {
  this(new ArrayList<Pie>());
 }

 public PieDataSource(List<Pie> dataList) {
  this.index = -1;
  this.dataList = dataList;
 }

 public Object getFieldValue(JRField arg0) throws JRException {

  Object o = null;
  String sName = arg0.getName();
  Pie result = dataList.get(index);

  if (result == null)
   return null;

  if (sName.equals("name")) {
   o = result.getName();
  } else if (sName.equals("money")) {
   o = result.getMoney();
  }
  return o;
 }

 public boolean next() throws JRException {
  index++;
  return (index < dataList.size());
 }

}

 

PieDataSourceprovider.java:

package com.chart.provider;
import java.util.ArrayList;
import java.util.List;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRAbstractBeanDataSourceProvider;

import com.chart.domain.Pie;
import com.chart.source.PieDataSource;

public class PieDataSourceProvider extends JRAbstractBeanDataSourceProvider {

 @SuppressWarnings("rawtypes")
 public PieDataSourceProvider(Class arg0) {
  super(arg0);
 }

 public PieDataSourceProvider() {
  super(Pie.class);
 }

 public JRDataSource create(JasperReport arg0) throws JRException {
  PieDataSource ds = new PieDataSource(getQueryResult());
  return ds;
 }

 public void dispose(JRDataSource arg0) throws JRException {
 }

 public static List<Pie> getQueryResult() {

  List<Pie> List = new ArrayList<Pie>();
  
  Pie pie1=new Pie("新浪",100000);  
        List.add(pie1);
  
  Pie pie2=new Pie("网易",200000);  
        List.add(pie2);
  
  Pie pie3=new Pie("搜狐",300000);  
        List.add(pie3);
  
  Pie pie4=new Pie("阿里巴巴",400000);  
        List.add(pie4);
  
  Pie pie5=new Pie("腾讯",500000);  
        List.add(pie5);
  return List;

 }

}

 

PieServlet.java

package com.chart.servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.j2ee.servlets.ImageServlet;

import com.chart.domain.Pie;
import com.chart.provider.PieDataSourceProvider;
import com.chart.source.PieDataSource;

public class PieServlet extends HttpServlet {

 
 private static final long serialVersionUID = -1418314965002997292L;

 public void service(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  PrintWriter out = response.getWriter();
  try {

   // 获得报表数据。这里使用ireport的测试数据。
   @SuppressWarnings("static-access")
   List<Pie> dataList = new PieDataSourceProvider().getQueryResult();

   // 载入报表模板,一定要指对路径和文件名
   File reportFile = new File(this.getServletContext().getRealPath(
     "/WEB-INF/classes/pieChart.jasper"));

   if (!reportFile.exists())
    throw new JRRuntimeException(
      "File WebappReport.jasper not found. The report design must be compiled first.");

   JasperReport jasperReport = (JasperReport) JRLoader
     .loadObject(reportFile.getPath());

   // 导入报表数据,并生成报表
   Map<String, Object> parameters = null;
   JasperPrint jasperPrint = JasperFillManager.fillReport(
     jasperReport, parameters, new PieDataSource(dataList));
   request.getSession().setAttribute(
     ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
     jasperPrint);

   // 输出html 用JRHtmlExporter
   JRHtmlExporter exporter = new JRHtmlExporter();

   exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
   exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
   // 设置报表图片的地址为"image?image=",因此要给image此地址安排一个servlet来输出图片,详细看web.xml文件。
   exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
     "image?image=");
   exporter.exportReport();
  }

  catch (JRException e) {
   e.printStackTrace();
   out.println("<html>");
   out.println("<head>");
   out.println("<body>");
   out.println("JasperReports encountered this error:<br/> "
     + e.getMessage());
   out.println("</body>");
   out.println("</html>");
  }

 }

}
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>JasperReportImageServlet</servlet-name>
    <servlet-class>
   net.sf.jasperreports.j2ee.servlets.ImageServlet
  </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>JasperReportImageServlet</servlet-name>
    <url-pattern>/image</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>PieServlet</servlet-name>
    <servlet-class>com.chart.servlet.PieServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PieServlet</servlet-name>
    <url-pattern>/3dpie</url-pattern>
  </servlet-mapping>
</web-app>

以上文件的包看源码进行生成和项目搭建,注意项目要进行编译或者部署在tomcat,让其生成class文件。

项目包:

ireport4 <wbr>+javabean做报表

 

3、配置classpath

然后将项目build到ireport的classpath中去,注意不要选错文件夹。

ireport4 <wbr>+javabean做报表

ireport4 <wbr>+javabean做报表

4、配置domain,如果read attributes出错,返回上面的classpath重做,类文件没有加入到classpath中。

ireport4 <wbr>+javabean做报表

5、新建一个项目,按提示进行

选择模板Blank A4

ireport4 <wbr>+javabean做报表

填写报表名称—》

ireport4 <wbr>+javabean做报表

选择数据源

ireport4 <wbr>+javabean做报表

将自己写的provider放上去,测试是否成功

ireport4 <wbr>+javabean做报表

将domain的字段添加进field:

ireport4 <wbr>+javabean做报表

下一步选择group1:name


ireport4 <wbr>+javabean做报表

下一步 创建成功。

 

3、删除不用的column

ireport4 <wbr>+javabean做报表

6、打开组件面板,选择pie 3D,拖放到summary,将图形放大至合适大小

ireport4 <wbr>+javabean做报表

7、点击pie,右键chart Data

ireport4 <wbr>+javabean做报表

8、按下图配置field,注意不要弄错。

ireport4 <wbr>+javabean做报表

9、点击preview

ireport4 <wbr>+javabean做报表

11、查看结果,成功了。

ireport4 <wbr>+javabean做报表

  • 大小: 6.1 KB
  • 大小: 26.1 KB
  • 大小: 79.8 KB
  • 大小: 53.9 KB
  • 大小: 43.8 KB
  • 大小: 24.8 KB
  • 大小: 38.3 KB
  • 大小: 17.7 KB
  • 大小: 23.5 KB
  • 大小: 25.5 KB
  • 大小: 20.6 KB
  • 大小: 46.3 KB
  • 大小: 32 KB
  • 大小: 47.2 KB
  • 大小: 31.8 KB
  • 大小: 21.7 KB
0
0
分享到:
评论

相关推荐

    ireport 学习资料 下载

    ### iReport 4.5 学习资料知识点总结 #### 一、简介 - **iReport**:是一款基于 **JasperReports** 引擎的图形界面报表设计工具,主要用于创建复杂的报表布局,并能够通过多种数据源(如数据库、XML、CSV等)获取...

    iReport中文教程(目前最全的)

    iReport提供了丰富的图表类型,如柱状图、饼图等。 #### 13.2 数据集 图表需要绑定数据集,数据集是图表的数据来源。 #### 13.3 图表属性 图表的属性包括颜色、标题、字体等,用户可以通过属性编辑器进行配置。 #...

    ireport资料汇总

    3. 数据绑定:JasperReports支持多种数据源,包括JavaBean、SQL查询、CSV、XML等。用户可以通过JDBC连接数据库,或者使用Java集合、Map等作为数据源。 4. 报表样式:通过样式表(JRStyle)控制报表的字体、颜色、...

    ireport操作手册(中文).pdf

    ### iReport操作手册知识点概述 #### 一、iReport简介 - **定义**: iReport是一款由Jaspersoft公司开发的开源报表设计工具,主要用于创建基于Java的报表。 - **功能特点**: - 支持多种数据源,如JDBC、XML、CSV等...

    iReport开发文档

    iReport提供了多种类型的图表,如饼图、柱状图、线图等,用户可以自定义级别、类型和属性,以满足各种可视化需求。 11. **插件与附加工具**: iReport的插件系统允许用户扩展其功能,例如大型编译器插件和文本...

    ireport操作手册(中文)

    - 饼图、柱状图、折线图等。 - **图表属性**: 调整图表外观和布局。 #### 十五、插件和附加工具 - **插件结构**: 插件的基本结构。 - **IReportPlugin类**: 插件基类。 - **常用插件**: 如大型编译器插件、文本...

    iReport_1.0用户手册

    - **创建图表**:iReport 支持多种图表类型,如饼图、柱状图、折线图等。 - **图表类型和属性**:每种图表都有其特定的属性和配置选项。 - **级 Series**:可以定义图表中的系列级别,用于更精细地控制数据展示。 #...

    ireport jfreechart 报表 录像

    这可能涉及到JavaBean、JRDataSource或自定义数据源的使用。 4. **图表类型与定制**:JFreeChart支持多种图表类型,如条形图、折线图、饼图、散点图等。录像可能会展示如何选择合适的图表类型,以及如何自定义轴...

    jasperreport iReport用户手册(PDF)翻译:董岿

    ### jasperreport iReport 用户手册知识点 #### 一、序言 **iReport** 是一个图形界面工具,用于设计和创建 **JasperReports** 的报表模板。它为开发者提供了直观的操作方式来创建复杂的报表。 ##### 1.1 什么是...

    iReport-JasperReport 报表开发指南

    图表可以直观地展示数据,iReport 提供了多种图表类型,如柱状图、折线图、饼图等。 ##### 13.2 数据集 数据集是图表所需的数据集合,通常由报表字段组成。 ##### 13.3 图表属性 图表属性包括标题、图例、轴标签...

    JasperReport報表製作入門

    这里的灵活性指的是可以使用多种数据源,例如数据库、XML、JavaBean、CSV文件等,并可以输出到打印机、屏幕或多种文件格式。 接下来,我们将对报表的设计、生成和输出流程进行详细说明。 #### 图形化设计工具——...

    jasperReport jar包

    JRXML是一种基于XML的文件格式,允许开发者使用文本编辑器或专门的报表设计工具(如iReport或Jaspersoft Studio)来创建报表模板。这些模板定义了报表的布局、样式、字段、图像、表格等元素。 2. **数据绑定**:...

Global site tag (gtag.js) - Google Analytics