如何动态设置单元格的左主格

单元格进行纵向扩展时,我们称其为其右边格子的左主格。

左主格属性可以默认缺省,也可以人为的改变。左主格可以固定的设置为某个单元格,也可以根据某个条件动态的设置。条件成立时左主格就是这个单元格,条件不成立时就是另一个单元格。比如下面的需求,就要用到动态的设置单元格的左主格的功能:一张报表有一行三列,A1是B1的左主格,B1是C1的左主格。B列根据条件隐藏,如果B列隐藏,C列就根据A列扩展;如果B列不隐藏,C列就根据B列扩展。

下面就介绍动态设置单元格左主格的方法。

大致思路:

用提供的API读取报表,得到一个ReportDefine对象,从这个对象中得到需要设置左主格的INormalCell单元格对象,然后根据条件用单元格类中的setLeftHead方法设置这个单元格的左主格,用Bean方式发布报表。

第一步:新建报表

打开快逸设计器,新建一个空白报表,另存为test.raq,新建一个参数,命名为arg,单元格中输入的内容如下:

A1: A列

B1: B列

C1: C列

D1: 接收的参数

A2: aa

B2: =to(1,5)

C2: cc

D2: =@arg

动态设置单元格的左主格1.png

第二步:编写发布报表的jsp

Jsp的内容如下:

<%@ page contentType=”text/html;charset=GBK”%>

<jsp:directive.page import=”com.runqian.report4.model.ReportDefine”/>

<jsp:directive.page import=”com.runqian.report4.util.ReportUtils”/>

<jsp:directive.page import=”com.runqian.report4.usermodel.INormalCell”/>

<jsp:directive.page import=”java.util.Enumeration”/>

<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report”%>

<%

//得到动态设置单元格左主格的标志。如果参数arg的值为1,设置C2单元格的左

//主格为A2,并且删除B列;如果参数arg的值不为”1″,设置C2单元格的左主格为B2

String arg = request.getParameter(”arg”);

//取得报表真实路径

String reportPath = request.getRealPath(”/reportFiles/test.raq”);

//用ReportUtils类中的read方法读取报表

ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);

//得到要设置左主格的单元格,第二行第三列

INormalCell cellC2 = rd.getCell(2,(short)3);

//设置单元格的左主格

if(arg.equals(”1″)){

//设置C2的左主格为A2

cellC2.setLeftHead(”A2″);

//删除B列

rd.removeCol((short)2);

}else{

//设置C2的左主格为B2

cellC2.setLeftHead(”B2″);

}

//生成一个动态的beanName

String beanName = “RPT_”+Double.toString(Math.random());

request.setAttribute(beanName,rd); //把ReportDefine对象在request中保存

//接收参数

StringBuffer param = new StringBuffer();

Enumeration paramNames = request.getParameterNames();

if(paramNames!=null){

while(paramNames.hasMoreElements()){

String paramName = (String) paramNames.nextElement();

String paramValue=request.getParameter(paramName);

if(paramValue!=null){

//把参数拼成name=value;name2=value2;…..的形式

param.append(paramName).append(”=”).append(paramValue).append(”;”);

}

}

}

%>

<html>

<body>

<table align=center>

<tr><td><!-用Bean方式发布报表–>

<report:html name=”report1″

srcType=”defineBean”

beanName=”<%=beanName%>”

params=”<%=param.toString()%>”

/>

</td></tr>

</table>

</body>

</html>

第三步:浏览

在IE浏览器中输入URL:http://127.0.0.1:6001/quiee/reportJsp/MyJsp.jsp?arg=1,效果如下

动态设置单元格的左主格2.png

B列删除,C列跟随A列扩展。

更改参数arg的值,再次浏览:http://127.0.0.1:6001/quiee/reportJsp/MyJsp.jsp?arg=12

效果如下

动态设置单元格的左主格3.png

C列跟随B列扩展。

总结:以后遇到动态设置单元格左主格的问题,可以按照上面的方法实现了。如果要动态设置单元格的上主格,可以用类setTopHead中

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值