缺点:
1.细节还不够严谨,饼图比较难看。
2.设计界面不好看,启动速度也慢。
3.没有成型的报表服务器,需要自己部署它的jar包,也没有缺省的权限控制、行桥发布这些功能,需要歼厅用它的api自己开发。
优点:
1.基于Excel的形式,对于制作表格特别方氏带隐便。
2.设计思想比较灵活,对于实现同比、环比这些功能很方便很容易,前两者要想实现这个一个需要编程,一个干脆实现不了。
3.国货。
具体的实现步骤如下:第一步:设计报表
这里使用mysql数据库为例做报表,数据源名称为”mysqlCon”,
第二步:读取Spring配置文件内的数据源工具类及工具类配置
1、 编写读取Spring配置文件内的数据源工具类
为避免每一个jsp运行报表时,在Jsp内都要用大段重复的代码获取数据源生成报表运行的上下文环境(Context),这里采用将生成Context的代码放在公共类中,每次Jsp发布报表的时候,只需将该类在Jsp内引入即可。
工具类代码如下:
import java.io.FileInputStream
import java.io.InputStream
import java.sql.Connection
import java.sql.SQLException
import javax.sql.DataSource
import org.springframework.context.ApplicationContext
import org.springframework.context.support.ClassPathXmlApplicationContext
import com.runqian.report4.model.ReportDefine
import com.runqian.report4.model.engine.ExtCellSet
import com.runqian.report4.usermodel.Context
import com.runqian.report4.usermodel.DataSourceConfig
import com.runqian.report4.util.ReportUtils
public class CalReportUtils{
public static Context getContext(){
//读取spring配置文件,生成Spring上下文环境
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{”applicationContext.xml”})
//通过getBean方式获取到Spring配置文件内的数据源,其中”裤答mysqlDataSource”为//Spring内数据库连接池的Bean名称。
DataSource ds = (DataSource)ctx.getBean(”mysqlDataSource”)
Connection connection = null
try {
//通过DataSource获取到数据库连接对象connection
connection = ds.getConnection()
} catch (SQLException e) {
e.printStackTrace()
}
//设置报表运算返纯团使用的授权文件,这里是固定格式。
String license = “F:/runqianWindowServer.lic”
ExtCellSet.setLicenseFileName(license)
//创建报表运行时的上下文环境,这里引入类时要注意,应该是润乾包漏橘内的Context
Context ct = new Context()
//设置报表设计时使用的数据源名称
ct.setDefDataSourceName(”mysqlCon”)
//设置报表运行的数据库连接
ct.setConnection(”mysqlCon”,connection)
//数据源配置
DataSourceConfig dsoc = new DataSourceConfig(10, true, “GBK”, “GBK”, false)
ct.setDataSourceConfig(”mysqlCon”, dsoc)
//返回报表运行的上下文环境对象ct
return ct
}
}
2、工具类配置
将编写好的工具类放在应用的Web-inf/classes下,重启应用服务器,使其加载在classpath中。
第三步:defineBean方式发布报表的Jsp文件
这里要采用defineBean的方式发布报表,下面是具体的Jsp例子:
<%@ page language=”java” import=”java.util.*” pageEncoding=”GBK”%>
<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>
<%@ page import=”com.runqian.report4.usermodel.Context” %>
//引入报表运行上下文环境工具类
<%@page import=”com.runqian.jolei.common.CalReportUtils”%>
<%@ page import=”java.io.*”%>
<%@ page import=”java.util.*”%>
<%@ page import=”com.runqian.report4.model.ReportDefine” %>
<%@ page import=”com.runqian.report4.util.ReportUtils” %>
<%
String path = request.getContextPath()
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”
%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<base href=”<%=basePath%>”>
<title>获取Spring数据源方式发布报表</title>
</head>
<body>
<%
//通过工具类获取一个context对象,从而创建出报表运行所需环境
Context ctx = CalReportUtils.getContext()
//报表路径,可相对应用根目录
String reportFilePath = “E:/aaaa.raq”
InputStream file
ReportDefine rd = null
try {
//使用流的方式将报表读入
file = new FileInputStream(reportFilePath)
//使用报表工具类读取报表流,生成ReportDefine报表对象
rd = (ReportDefine)ReportUtils.read( file )
} catch (Exception e) {
e.printStackTrace()
}
request.setAttribute(”reportBean”,rd)
request.setAttribute( “myContext”, ctx )
%>
<table align=center>
<tr><td>
<!-defineBean方式发布报表标签使用,srcType指定为defineBean,beanName指定为request中的名称reportBean,contextName指定为request中的myContext。到此就可以正常发布展现报表了–>
<report:html name=”report1″ srcType=”defineBean” beanName=”reportBean” contextName=”myContext”/>
</td></tr>
</table>
</body>
</html>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)