润乾报表实现日历功能

       日历最多6行7天,因此只需在单元格A2输入=to(0,5),B1单元格输入=(1,7)即可,然后将A列隐藏。

       接下来需要对参数进行详细设置,如图:

润乾报表实现日历功能_第1张图片

       其中年份月份为用户输入,style参数为用户选择中式和英式两种模式,the_date利用用户输入的月份年份自动计算出当月的第一天。设置成动态参数。

       设置完毕后,B2单元格内表达式为=A2*7+B1-if(dayNo(@the_date)==1,7,dayNo(@the_date)-1)+int(@style)-1,这样才能根据表现方式的不同,将对应日期写入对应单元格下,dayNo()函数表示以数字形式返回当天的星期值,星期日返回1,星期一返回2,依次类推,通过if函数,我们可以让星期日返回7,星期一返回1等等。

       B1的显示值要根据style的不同显示不一样的文字,英式style,江南style神马的。if(int(@style)==1,map(to(1,7),list("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")),map(to(1,7),list("星期一","星期二","星期三","星期四","星期五","星期六","星期日")))  别忘了还要让它横向扩展。

       然后B2的显示值要设置表达式if(value()<1||value()>day(monthend(@the_date)),"",value()),将格中的负值神马的全部显示成空。

       在B2格的隐藏行属性输入表达式if(A2{}>=4 and B1{}==1 and value()>day(monthend(@the_date)),true,if(A2{}==0 and B1{}==7 and  value()<1,true,false))

       给B1和B2的前景色设置一下表达式,我们总是喜欢周末,无论中国还是外国,果断标红之。if(@style=="1",if(B1{}==1 or B1{}==7,-65536,-16777216),if(B1{}==6 or B1{}==7,-65536,-16777216))不用纠结,-65536就是红色。。

       最后给个效果图:

      

润乾报表实现日历功能_第2张图片

润乾报表实现日历功能_第3张图片

 

润乾报表实现日历功能_第4张图片润乾报表实现日历功能_第5张图片

by the way,可以把这个参数搞成动态的,弄到网页上做动态传参,效果更好些。

你可能感兴趣的:(日历,报表)