欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么在eclipse中利用cr插件开发报表

更新时间: 2014-01-05 03:07:24 责任编辑: Author_N1

 

如何在Eclipse中利用CR插件开发报表

要在Eclipse中开发CR报表,我首先要下载CR报表的插件Crystal Report for Eclipse Edition1.0(CR4E)

 

下载地址为

 

选择其中的手动下载(Manual  Installation)大概50多M的样子。

 

下载好后,和安装其他的插件一样,如果没有问题的话,我们就可以在Eclipse的项目新建中看到

Create a Crystal Reports web project这个选项了,

 

我们选择新建一个Crystal Reports web project项目,取名为TestCR,新建完成后,项目需要jar包都会自动添加到lib目录下面。因为要涉及到数据的链接我可以自己添加相应的数据库驱动jar包。这里我添加的是SQL Server2005的jar包。

 

 

本文主要简单介绍下,如何从test数据库中student表中数据查询出来,在报表中显示出来。

 

 

 

因为数据来自于数据库,因此建立一个链接数据库的类:DBConn.java

package com.lyl.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConn {
	
	public static final String USERNAME="sa";
	
	private static final String PASSWORD="123";
	
	private static final String CONNECTION_URL = "jdbc:sqlserver://localhost:1433;databaseName=test";

	private static Connection  conn=null;
	

	/**
	 * 准备一个本地线程池(为了装连接)
	 */
	private static  ThreadLocal<Connection> t=new ThreadLocal<Connection>();
	
	
	
	static{
		
		
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public static Connection getConn(){
		
		//先从连接池里面拿
		conn=t.get();
		
		try {
			
		
			if(conn==null)
			{
				conn=DriverManager.getConnection(CONNECTION_URL, USERNAME, PASSWORD);
			}
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		return conn;
	}
	
	
	public  static void closeConn(){
		
		conn=t.get();
		
		try {
				if(conn!=null&& !conn.isClosed()){
			
				conn.close();
				
				//清空关闭的连接
				t.set(null);
					}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

 

其次,建立一个操作数据库的DAO类,StudentDao.java

package com.lyl.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import java.util.ArrayList;
import java.util.List;

import com.lyl.entity.Student;

import com.lyl.utils.DBConn;

public class StudentDao {
	
	public  List<Student> queryAll() {
		
		Connection conn=null;
		PreparedStatement pst=null;
		
		List<Student> studentList=new ArrayList<Student>();
		String sql="select stu.sid,stu.sname,stu.age,stu.cardid,stu.tid from dbo.Student stu";
		
		
		conn=DBConn.getConn();
		
		try {
			
				pst=conn.prepareStatement(sql);
				
				ResultSet rs=pst.executeQuery();
				
				
				Student stu=null;
				
				while(rs.next())
				{
					
					stu=new Student();
					
					stu.setSid(rs.getInt("sid"));
					stu.setSname(rs.getString("sname"));
					stu.setAge(rs.getInt("age"));
					stu.setTid(rs.getInt("tid"));
					stu.setCardid(rs.getString("cardid"));
					
					studentList.add(stu);
				}
		
		} catch (Exception e) {
			
			DBConn.closeConn();
			
			e.printStackTrace();
		}
		finally{
			
			DBConn.closeConn();
		}
		return studentList;
		
		
		
		
	}
}

 

和数据库表对应的实体类Student.java

package com.lyl.entity;

public class Student {
	
	private int sid;
	
	private String sname;
	
	private int age;
	
	private String cardid;
	
	private int tid;

	public int getSid() {
		return sid;
	}

	public void setSid(int sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getCardid() {
		return cardid;
	}

	public void setCardid(String cardid) {
		this.cardid = cardid;
	}

	public int getTid() {
		return tid;
	}

	public void setTid(int tid) {
		this.tid = tid;
	}
}

 

以上全多做好后,下面的才是关键,如何与报表关联。

 

首先,我们可以通过,首先我们需要一个空白的报表文件,此时项目中应该在新建的时候就自动生成了一个报表文件CrystalReport1.rpt和一个CrystalReport-viewer.jsp的jsp文件,因此我们不需要新建了,可以直接用。

 

1、打开报表,可以看到报表中有Layout(布局),Formulas(计算公式),Data(数据),Preview(预览),Crystal Report Community等几种视图,我么打开Data视图。

2、在项目资源管理其中,选中java视图,找到要在报表显示的数据对于的实体。这里是student.java,选中student.java前面的图标,拉倒报表视图中,此时我们可以看到Student的各个字段都在报表中,选中要显示是字段,右键——insert,这时我们打Layout视图中可以看到对应的字段了,有必要调整下布局。

 

3、在CrystalReport-viewer.jsp添加一下代码。

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="/crystal-tags-reportviewer.tld" prefix="crviewer" %>
<crviewer:viewer reportSourceType="reportingComponent" viewerName="Report1-viewer" reportSourceVar="Report1" isOwnPage="true">
	<crviewer:report reportName="Report1.rpt" />
</crviewer:viewer>

<%//Crystal Java Reporting Component (JRC) imports.%>
<%-- jrcerom.jar--%>
<%@page import="com.crystaldecisions.sdk.occa.report.application.*" %>

<%-- rascore.jar--%>
<%@page import="com.crystaldecisions.sdk.occa.report.lib.*" %>
<%@page import="com.businessobjects.samples.*,java.util.*" %>
<%@page import="com.lyl.dao.StudentDao,com.lyl.entity.Student" %>

<%
//水晶报表的位置
final String REPORT_NAME = "CrystalReport1.rpt";
%>


<%
	
	String className="com.lyl.entity.Student";

	String tableAlias="student";
	
	ReportClientDocument reportDocument=new ReportClientDocument();
	
	reportDocument.open(REPORT_NAME, 0);
	
	StudentDao stuDao=new StudentDao();

	
	List<Student> stuList =stuDao.queryAll();
	
	
	CRJavaHelper.passPOJO(reportDocument,stuList,className,tableAlias,""); 
	


%>

 

 4、启动Tomcate,运行CrystalReport-viewer.jsp,将可以看到所有的学生信息都会在报表中显示了。

 

 

 

 

 

 

 

 

 

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:07:24
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/18600/
本文WWW.DOC100.NET DOC100.NET版权所有。