润乾报表如何取单元格的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了润乾报表如何取单元格的值相关的知识,希望对你有一定的参考价值。

如图,我想点击“取A1单元格值”这个按钮,然后弹出对话框显示单元格值的内容我的JSP页面如下:输出“two”后,就不执行下面内容了,而且取单元格的值都是null,请问到底是如何取单元格的值。<%@ page contentType="text/html;charset=GBK" %><%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.runqian.report4.usermodel.Context"%><html>
<body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<%
request.setCharacterEncoding( "GBK" );
String report = request.getParameter( "raq" );
String reportFileHome=Context.getInitCtx().getMainDir();
StringBuffer param=new StringBuffer();

//保证报表名称的完整性
int iTmp = 0;
if( (iTmp = report.lastIndexOf(".raq")) <= 0 )
report = report + ".raq";
iTmp = 0;


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(";");


%>
<table id=rpt align=center><tr><td>
<table align="center">
<tr>
<td>
<input type="button" value="取A1单元格值" onclick="_getDispValueByName()"/>
</td>
</tr>
</table>
<table align=center>
<tr><td>sss
<report:html name="report6" reportFileName="<%=report%>"
funcBarLocation="top"
needPageMark="yes"
generateParamForm="no"
params="<%=param.toString()%>"
width="-1"
exceptionPage="/reportJsp/myError2.jsp"
/>
</td></tr>
</table><script language="javascript">
function _getDispValueByName()
alert("one");
  var cell = document.getElementById("report6_A1");
alert(cell); //此步输出为null
alert("two"); //输出完"two"后,程序执行中止
alert(cell.value);
alert("three");
  alert(cell.innerHTML); //用alert()函数弹出这个单元格的值
alert("four");
</script></body>
</html>

代码好多~~||,你要不试试用finereport吧,不需要写这么多代码也能实现的。

3.1 模板设计

表样设计如下:


设置B2单元格的控件类型为数字型,设置B3单元格的控件类型为文本

3.2 JS事件设置

对B2单元格控件设置事件编辑,添加编辑结束事件,具体JS代码如下:

1.var D2value = contentPane.curLGP.getCellValue("D2"); //获取D2单元格的值 

2.if (this.getValue() < D2value)     //判断输入值是否小于D2单元格值 

3. FR.Msg.alert(FR.i18n.Alert, "该值不能小于" + D2value);     //弹出对话框 

4.return false; 

5. 

对B3单元格控件进行事件编辑,添加编辑结束事件,具体JS代码如下:

1.var D3value = contentPane.curLGP.getCellValue("D3");  //获取D3单元格的值 

2.if (this.getValue() != D3value)       //判断输入是否与D3单元格相等 

3.FR.Msg.alert(FR.i18n.Alert, "该值应等于" + D3value);   //弹出对话框 

4. return false; 

5. 

其中,D3value是自定义变量,用于获得D3单元格的值,if语句是用来判断该单元格输入后的值是否等于D3value,如果不是是则弹出警告:该值应等于abc。

3.3填报预览

点击填报预览,在B2单元格中输入数字1,并按回车确定,则弹出警告,如下图:


在B3单元格中输入add,并按回车确定,也弹出校验警告,如下图:

参考技术A 你可以在报表的展现界面定义如下js方法
<script>
function gValue()
var tab1=document.getElementById("report1_A1").innerHTML; --使用这种方式获取单元格需要在html标签中添加 generateCellId="yes"属性才能获取单元格编号
alert(tab1);

</script>
然后,在报表的“取A1单元格值”的单元格设置HTML事件,调用gValue()方法。
参考文献:
c.raqsoft.com.cn/article/1534918139702

润乾报表之序号固定行数统计

图一图二为例子,请结合自己的需求更改单元格

图一

图二

序号:

报表如果有需求要显示序号,类似图一第一列,在A11的位置赋值=&B11,

并且将单元格的左主格设为B11这样就可以添加序号了;

固定行数:

有时要求表格固定行数,例如图一固定位10行,就是说,如果只有三行数据,

要补上7行空格,生凑成10行;在A12的位置赋值=to(count(A11{})+1,10),

这样,在即使没有数据的情况下也会显示10个空行并且带有序号;

统计:

图一中有俩种类型的统计,一种是个数统计,另一个是内容求和。

个数统计在B13里面赋值=count(B11{}),该函数会统计有内容的单元格的个数,

内容求和在F13里面赋值=sum(F11{}),该函数会累加单元格里面所有内容。

以上是关于润乾报表如何取单元格的值的主要内容,如果未能解决你的问题,请参考以下文章

润乾报表之序号固定行数统计

润乾报表:

润乾报表 多数据源如何比较两个字段值?

润乾报表之条形码

润乾报表之日期格式小数位数

润乾报表之分组