因为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文件。
项目包:
3、配置classpath
然后将项目build到ireport的classpath中去,注意不要选错文件夹。
4、配置domain,如果read attributes出错,返回上面的classpath重做,类文件没有加入到classpath中。
5、新建一个项目,按提示进行
选择模板Blank A4
填写报表名称—》
选择数据源
将自己写的provider放上去,测试是否成功
将domain的字段添加进field:
下一步选择group1:name
下一步 创建成功。
3、删除不用的column
6、打开组件面板,选择pie 3D,拖放到summary,将图形放大至合适大小
7、点击pie,右键chart Data
8、按下图配置field,注意不要弄错。
9、点击preview
11、查看结果,成功了。
- 大小: 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
分享到:
相关推荐
### iReport 4.5 学习资料知识点总结 #### 一、简介 - **iReport**:是一款基于 **JasperReports** 引擎的图形界面报表设计工具,主要用于创建复杂的报表布局,并能够通过多种数据源(如数据库、XML、CSV等)获取...
iReport提供了丰富的图表类型,如柱状图、饼图等。 #### 13.2 数据集 图表需要绑定数据集,数据集是图表的数据来源。 #### 13.3 图表属性 图表的属性包括颜色、标题、字体等,用户可以通过属性编辑器进行配置。 #...
3. 数据绑定:JasperReports支持多种数据源,包括JavaBean、SQL查询、CSV、XML等。用户可以通过JDBC连接数据库,或者使用Java集合、Map等作为数据源。 4. 报表样式:通过样式表(JRStyle)控制报表的字体、颜色、...
### iReport操作手册知识点概述 #### 一、iReport简介 - **定义**: iReport是一款由Jaspersoft公司开发的开源报表设计工具,主要用于创建基于Java的报表。 - **功能特点**: - 支持多种数据源,如JDBC、XML、CSV等...
iReport提供了多种类型的图表,如饼图、柱状图、线图等,用户可以自定义级别、类型和属性,以满足各种可视化需求。 11. **插件与附加工具**: iReport的插件系统允许用户扩展其功能,例如大型编译器插件和文本...
- 饼图、柱状图、折线图等。 - **图表属性**: 调整图表外观和布局。 #### 十五、插件和附加工具 - **插件结构**: 插件的基本结构。 - **IReportPlugin类**: 插件基类。 - **常用插件**: 如大型编译器插件、文本...
- **创建图表**:iReport 支持多种图表类型,如饼图、柱状图、折线图等。 - **图表类型和属性**:每种图表都有其特定的属性和配置选项。 - **级 Series**:可以定义图表中的系列级别,用于更精细地控制数据展示。 #...
这可能涉及到JavaBean、JRDataSource或自定义数据源的使用。 4. **图表类型与定制**:JFreeChart支持多种图表类型,如条形图、折线图、饼图、散点图等。录像可能会展示如何选择合适的图表类型,以及如何自定义轴...
### jasperreport iReport 用户手册知识点 #### 一、序言 **iReport** 是一个图形界面工具,用于设计和创建 **JasperReports** 的报表模板。它为开发者提供了直观的操作方式来创建复杂的报表。 ##### 1.1 什么是...
图表可以直观地展示数据,iReport 提供了多种图表类型,如柱状图、折线图、饼图等。 ##### 13.2 数据集 数据集是图表所需的数据集合,通常由报表字段组成。 ##### 13.3 图表属性 图表属性包括标题、图例、轴标签...
这里的灵活性指的是可以使用多种数据源,例如数据库、XML、JavaBean、CSV文件等,并可以输出到打印机、屏幕或多种文件格式。 接下来,我们将对报表的设计、生成和输出流程进行详细说明。 #### 图形化设计工具——...
JRXML是一种基于XML的文件格式,允许开发者使用文本编辑器或专门的报表设计工具(如iReport或Jaspersoft Studio)来创建报表模板。这些模板定义了报表的布局、样式、字段、图像、表格等元素。 2. **数据绑定**:...