3.1阳历转阴历的类
FineReport 提供一个现成的农历日历工具类 SolarToLunar,该类中通过 today(int year, int month, int day)方法可将输入的年、月、日对应的阳历转为阴历日期,完整代码详见:
3.2自定义 FineReport 函数
自定义函数 Lunar 扩展于 AbstractFunction,并重写 run 方法,获得年月日参数值,调用农历日历工具类 SolarToLunar的 today 方法,求得农历日期并返回,代码详见:
3.3 编译并运行
1)编译自定义函数
编译Lunar.java和SolarToLunar.java类生成Lunar.class和SolarToLunar.class文件拷贝至报表应用所在目录%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\function下。
2)注册自定义函数
启动设计器,点击服务器>函数管理器,新增函数取名为Lunar,选择 Lunar.class类,如下图:
此时自定义函数便定义好了,您可以在设计器中使用该函数。
3)使用自定义函数
在单元格中写入公式=Lunar(,10,17),预览模板便可以看到把日期 年 10 月 17 日阳历转换成阴历了。
若数据库日期类型字段,拖到模板设计界面,设置高级属性,在自定义显示值里面输入公式Lunar(year($$$),month($$$),day($$$)),如下图设置,则可把保存在数据库里面的阳历日期转换成阴历了。
注:该自定义函数的日期类型参数只能是(,10,17)这个格式的日期,如果不相符合,则需要通过自定义显示将格式进行转换,如上所述。