润乾报表集成到Eclipse开发环境.docx

润乾报表集成到Eclipse开发环境.docx

ID:53825183

大小:952.80 KB

页数:35页

时间:2020-04-07

上传者:U-5097
润乾报表集成到Eclipse开发环境.docx_第1页
润乾报表集成到Eclipse开发环境.docx_第2页
润乾报表集成到Eclipse开发环境.docx_第3页
润乾报表集成到Eclipse开发环境.docx_第4页
润乾报表集成到Eclipse开发环境.docx_第5页
资源描述:

《润乾报表集成到Eclipse开发环境.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

目录1将润乾报表整合到EclipseWeb项目11.1拷贝润乾报表所需文件11.2修改配置文件31.3添加数据源51.4多数据源配置62润乾报表模板配置62.1新建数据源62.2新建报表82.3给报表添加过滤条件132.4分组报表182.5多数据源报表212.6子报表252.7引用子报表内容312.8设置报表样式323在JSP中引用报表34 1将润乾报表整合到EclipseWeb项目1.1拷贝润乾报表所需文件打开润乾报表程序根目录下的webappsdemoWEB-INFlib,将目录下的所有jar包拷贝到Web项目的lib目录下:打开润乾报表程序根目录下的webappsdemoWEB-INF,将以下文件拷贝到Web项目的WEB-INF目录下: 打开润乾报表程序根目录下的webappsdemo,将以下文件拷贝到Web项目的WebContent目录下:在WebContent目录下新建reportFiles目录用来存放报表文件: 将润乾报表Designer授权文件拷贝到Web项目的src目录下:1.1修改配置文件web.xml打开Web项目的web.xml文件,在web-app节点内添加如下内容:SetContextServletcom.runqian.util.webutil.SetContextServlet2reportServletcom.runqian.report4.view.ReportServletconfigFile/WEB-INF/reportConfig.xml1DMServletcom.raq.web.view.DMServletconfigFile/WEB-INF/dmConfig.xml10 reportServlet/reportServletDMServlet/DMServletDMServlet/DMServletAjax/WEB-INF/runqianReport4.tld/WEB-INF/runqianReport4.tldreportConfig.xml打开Web项目的reportConfig.xml文件,将license的值修改为刚才拷贝到src目录下的授权文件的名称:将reportFileHome的值修改为刚才新建的用来存放报表文件的目录的名称:JNDIPrefix属性表示查找数据源时的环境串前缀,在不同的WEB服务器中不同,如Tomcat中是java:/comp/env,而Weblogic和Websphere中均不需要,可以不填. dataSource表示用户在WEB应用中要用到的数据源配置,其格式如下:数据源的JNDI名称,数据库类型[,取数时是否需要转换编码,数据库字符集编码,显示报表时的字符集编码][,SQL是否需要转码];[重复]……数据库类型按下表填写:注:上表中不存在的数据库类型,参数值都写为写unknown.1.1添加数据源以tomcat为例,找到%TOMCAT_HOME%/confCatalinalocalhost项目名称.xml文件,没有则新建一个,内容为:红色标记为需要配置的地方,其他配置参数,按照自己项目的需求进行配置.其中name的值请与reportConfig.xml中的dataSource的数据源名称保持一致. 1.1多数据源配置如果报表中需要使用多个不同数据源,可以参照上一步在web容器中添加一个数据源:然后在reportConfig.xml的dataSource中追加一条配置:多条数据源之间以半角分号隔开.至此Web项目已经完成了与润乾报表的整合.2润乾报表模板配置2.1新建数据源打开润乾报表设计器,点击菜单配置--数据源 点击新建—关系数据库填写数据库信息 点击连接按钮连接数据源1.1新建报表点击菜单文件—新建报表 填报类型选择普通报表,数据源填写上一步定义的数据源名称,数据集类型选择SQL检索:选中需要的表 选中需要的列: 检索条件暂时不填,选取排序字段可以在语法内看到生成的语句如下 点击确定,报表类型向导页面可以调整字段显示顺序 报表定义页面可以隐藏不需要显示的字段点击生成网格报表后生成的报表样式如下1.1给报表添加过滤条件例如上例中报表需要一个过滤条件wherecontrylike‘%中国%’,首先右键点击生成的报表的第00单元格,选择参数选项: 新增一个参数contry,数据类型为字符串可以给定一个预设值为’中国’:右键点击00格,选择数据集: 点击编辑,可以看到之前定义的数据集选择检索条件,选择需要添加的字段,在右边的窗口中填写表达式,参数使用占位符?代替,语法与HQL相同: 选择参数,点击增加按钮添加一个参数,双击参数表达式栏会弹出表达式编辑窗口 数据栏会列出当前报表已定义的参数,双击可添加到报表表达式栏.点击浏览数据可预览当前数据集查询结果:此处数值会自动填写定义参数时所填写的预设值.点击确定预览数据: 点击文件—预览可预览报表效果:1.1分组报表例如上例中报表需要按照国家—省份—城市进行分组,首先调整一下字段顺序,然后将报表数据区内需要分组的字段改为=数据集.group(字段)格式: 函数说明:根据分组表达式,从数据集中选出一组组集。语法:datasetName.group(,,)//适用于不需要排序或数据集中已排好序datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})参数说明:selectExp选出的分组表达式,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推descExp分组前记录的排序顺序,true为逆序,false为顺序filterExp过滤表达式sortExp分组前记录的排序依据表达式groupSortExp分组后对组的排序表达式,一般是汇总运算的表达式,如组合计等groupDescExp组排序顺序,true为逆序,false为顺序rootGroupExp是否root数据集表达式返回值:一组数据的集合,数据类型由selectExp的运算结果来决定示例:例1:ds1.group(class)把数据集ds1中所有记录按照class字段进行分组,并返回每组的class值组成的集合例2:ds1.group(class,true)把数据集ds1中所有记录按照class字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合例3:ds1.group(class,false,sex=='1')从数据源ds1中选取性别为"1"的记录,按照class字段升序排列,然后根据class进行分组,并返回每组的class值组成的集合例4:ds1.group(class,true,sex=='1',id)从数据源ds1中选取性别为"1"的记录,按照id字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合例5:ds1.group(省份,true,,,ds1.sum(工业产值),true)对数据集ds1按照省份进行分组,分组后求出每组的sum(工业产值),然后按照这个汇总值对组进行逆序排列预览数据如下会发现少了一条数据并且没有正确分组.这是由于没有对分组字段进行排序,并且未分组字段只选取了符合条件的第一条数据.给每个分组字段加上排序选项,并为没有进行分组的text字段加上select函数: 预览结果如下select()函数说明:从数据集的当前行集中选取符合条件的记录语法:datasetName.select({,desc_exp{,filter_exp{,sort_exp{,rootGroupExp}}}})datasetName.select(,,)//适用于不需排序或数据集中已排好序参数说明:select_exp:要选择的字段列名/列号,,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推desc_exp:指定数据排序的顺序,true表示降序排列,false表示升序排列。filter_exp:数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。sort_exp:数据排序表达式。当此项为空时先检查desc_exp是否为空,如果为空,则不排序,否则使用select_exp排序。rootGroupExp是否root数据集表达式返回值:一组数据的集合,数据类型由select_exp的运算结果决定函数示例:例1:ds1.select(name)从数据源ds1中选取name字段列的所有值,不排序例2:ds1.select(#2,true)从数据源ds1中选取第二个字段列的所有值并降序排列例3:ds1.select(name,false,sex=='1')从数据源ds1中选取性别为男性('1')的name字段列的值并升序排列例4:ds1.select(name,true,sex=='1',id)从数据源ds1中选取性别为男性的name字段列的值并按id字段降序排列如果需要分组的字段不是相邻的字段,例如预览结果 选择报表E2单元格,在右边属性窗口将扩展-左主格属性设置为A2:同样方式将B2单元格的左主格设置为E2,预览结果:1.1交叉报表1.2多数据源报表假设在另一张表report_c中保存了本例数据的备注信息,现在要在本例报表的remark一列显示出来.右键点击报表模板的00单元格,选择数据集选项: 点击增加按钮,选择类型为复杂SQL:直接定义查询语句: 确定后选择需要的数据源:点击浏览数据,结果如下: 将报表数据区D2的值改为=ds1.id:在右侧属性栏将D2的值—显示值—表达式改为ds2.select(remark,,pid==value())预览数据如下:会发现除了应有的两条数据之外,其余应该为空的单元格也被填入了本列的ID值.修改一下D2的值—显示值—表达式,改为nvl(ds2.select(remark,,pid==value()),""),预览结果如 下:nvl()函数说明:根据第一个表达式的值是否为空,若为空则返回指定值语法:nvl(valueExp1,valueExp2)参数说明:valueExp1需要计算的表达式,其结果不为空时返回其值valueExp2需要计算的表达式,当valueExp1结果为空时返回此值返回值:valueExp1或valueExp2的结果值示例:例1:nvl(A1,"")表示当A1为空时,返回空串,否则返回A1例2:nvl(value(),0)表示当当前格为空时返回0,否则返回当前格的值1.1子报表假设在另一张表report_sub中保存了本例数据的备注信息,现在要在本例报表显示出来.按照新建数据源的步骤新建一个子报表,SQL语句如下: 报表定义如下:其中数据区B1,B2扩展方式为横向扩展,在右侧属性窗口中设置:count()函数说明:计算数据集当前记录行集中,满足条件的记录数语法:datasetName.count({filterExp{,rootGroupExp{,nullCheckExp}}})参数说明:filterExp条件表达式,如果全部选出,则不要此参数,rootGroupExp是否root数据集表达式nullCheckExp检查某一条记录是否为空的标达式返回值:整数举例:例1:ds1.count()表示对ds1中当前记录行集中所有记录进行计数,返回记录数。例2:ds1.count(true)含义同上,但是运算速度比ds1.count()慢,因此当记录全部选出时,建议不要true例3:ds1.count(quantity>500)表示从ds1当前记录行集中选出quantity>500的记录进行计数,返回记录数。例4:ds1.count(,,ID)表示当前记录行集中ID不为空的纪录数目 预览结果如下:将子报表保存在与主报表同一目录下.在主报表的任意一列上点击右键,选择追加数据列: 在数据区F2点击右键,选择子报表:点击定义子报表—添加,路径选择相对路径,URL填写子报表的文件名,双击可浏览选择:注:此处相对路径是相对于web应用的根路径,因此当在jsp页面引用报表时,需要填写的是reportFiles/report_sub.raq(reportFiles为拷贝润乾报表所需文件中所定义的存放报表文件的文件夹名称).本例中测试所填写的是绝对路径.引用方式选择嵌入式,点击增加按钮增加一个参数pid,对应表达式直接填写主D2: D2表示直接引用主报表D2数据区的值作为参数,如果需要传入参数,也可以通过双击方式打开表达式编辑窗口:由于新追加字段左边为排序字段,所以将追加数据区F2的左主格设置为非排序字段的D2:预览结果如下: 1.1引用子报表内容例如我们想在主报表中追加一列统计子报表中的总条数,先在子报表追加一列:sum()函数说明:对可扩展单元格或集合表达式进行求和语法:sum(expression)sum(cellExp,exp)参数说明:expression需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式cellExp单元格或单元格集合,以cellExp里的单元格为当前格计算表达式expexp表达式返回值:实数或者字符型,由被汇总的单元格数据类型决定示例:例1:sum(A1:A10)求出单元格A1至A10的合计值,被统计单元格可以是数值型也可以是字符型例2:sum(arg1)其中arg1是参数组,求出arg1中所有元素的合计值例3:sum(B1{})表示求得当前主格扩展区域内所有扩展后的B1单元格的合计值例4:sum(B1[`0]{})表示求得根坐标下所有扩展后的B1单元格的合计值例5: sum(A1[`0]{},B1+C1)计算分别与每个A1相对应的B1、C1的和的合计值选中B3单元格,展开右边属性列表中的“扩展”,把B3的上主格设为`0,这样可以使B3单元格汇总的是B1扩展出来的所有年份的合计。选中第四行,将第四行的可视属性的打勾去掉,即这样预览时就不会显示第三行了。将第三行设为不可见,而不是删除,因为主报表将引用B3单元格的值。在主报表中插入一列:E2单元格表达式的含义是:G2为嵌入式子报表,取得G2中的子报表中B3的值,这样就相当于主报表引用子报表的数据值并汇总。eval()函数说明:动态解析并计算表达式语法:eval(StringExp)eval(StringExp,SubRptExp)eval(StringExp,DataSetExp)参数说明:StringExp待计算的表达式串SubRptExp嵌入式子报表对象,一般是含有子报表的单元格DataSetExp数据集对象,一般是ds函数返回值:表达式的结果值,数据类型由表达式决定示例:例1:eval("1+5")返回6例2:eval("B2+10",A1)其中A1为嵌入式子报表,表示计算A1子报表中的B2+10例3:eval("salary+100",ds("ds1"))表示计算数据集ds1中salary加100预览效果如下: 1.1设置报表样式报表样式基本设置方式与excel相同,可自行设置显示样式.报表标题及报表尾设置方法如下:在报表最上方插入一行,在右边属性窗口设置行类型为头标题:在报表最下方插入一行,在右边属性窗口设置行类型为报表尾:效果如下: 预览效果:now()函数说明:获得系统此刻的日期时间语法:now()返回值:日期时间1在JSP中引用报表加入下行引入报表标签:<%@tagliburi="/WEB-INF/runqianReport4.tld"prefix="report"%>在页面用java代码传递参数:<%//获取由参数表单传递的值request.setCharacterEncoding("GBK");Stringparam="contry="+request.getParameter("userId");%>报表标签: 页面预览效果:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭