润乾报表/引用自身格内数据

在实际的报表工作中我们经常会遇到,需要取自身单元格内数据的情况,该如何处理呢?看下面的一个简单案例:

在一张填报单中,我们需要自动计算价格,由成本与利润相加,但是库中的数据有的由于折扣等原因,售价一格中已经有数据,这时候要保留原数据。

先依下图还原场景:

润乾报表/引用自身格内数据_第1张图片润乾报表/引用自身格内数据_第2张图片润乾报表/引用自身格内数据_第3张图片润乾报表/引用自身格内数据_第4张图片

 

将A2与B2的填报属性设置为可写:

 

润乾报表/引用自身格内数据_第5张图片

这时候,如果我们单纯地在C2单元格填报属性,自动计算中写入${C2}==''?${A2+B2}:${C2}是不行的,而且自动计算基于JAVA语言,也不能够使用value()这种函数。

 

这种情况下,我们通常会采取复制一个C2到其他单元格,然后在C2中引用那个单元格就可以了,当然这是一种办法,但是对于数据量大的报表来说,大量的引用以及单元格的计算会影响效率。所以必须想办法在C2的自动计算中引用C2的值。

 

我们可以在D列中加入辅助运算列,如图:

润乾报表/引用自身格内数据_第6张图片

注意要勾选掉可视或者选中隐藏列属性。

 

然后我们在C2格的自动计算中使用document对象:

document.getElementById("report1_C"+${D2}).innerText==''?${A2+B2}:document.getElementById("report1_C"+${D2}).innerText

 

显示结果如下:

润乾报表/引用自身格内数据_第7张图片

其中,第1,2,5行的数据是保留的,3,4行则是通过自动计算出来的。

在处理大量数据的时候,这种算法将会节约近一倍的时间。在编写SQL语句时,为了方便维护,增强拓展性,算法的优化非常重要。在需要单条数据的时候,select1将比select节约大量时间,从库中引出数据,大量的sum(),count()函数等也会使程序变得拖沓,合理使用SQL临时表,合理利用js函数,都将使得我们的运算更加流畅。

你可能感兴趣的:(润乾报表/引用自身格内数据)