反馈已提交

网络繁忙

自定义函数把阳历转换成阴历

  • 文档创建者:lu123
  • 历史版本:14
  • 最近更新:Carly 于 2020-12-23
  • 1. 描述

    数据库保存的是阳历日期,在报表展示时希望把阳历转换成阴历,方便查询各种阴历节日的功能,如下图把阳历转换成阴历的效果。

    222


    2. 解决方案

    首先定义一个可以将阳历转为阴历的类,然后自定义 FineReport 函数,在 run 方法中获取年月日参数并调用之前的类将阳历转为阴历,最终返回给报表。


    3. 实现步骤

    3.1 阳历转阴历的类

    FineReport 提供一个现成的农历日历工具类 SolarToLunar,该类中通过 today(int year, int month, int day)方法可将输入的年、月、日对应的阳历转为阴历日期,完整代码详见:

    https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/function/SolarToLunar.java


    3.2 自定义 FineReport 函数

    自定义函数 Lunar 扩展于 AbstractFunction,并重写 run 方法,获得年月日参数值,调用农历日历工具类 SolarToLunar的 today 方法,求得农历日期并返回,代码详见:

    https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/function/Lunar.java


    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 类,如下图:

    222

    此时自定义函数便定义好了,您可以在设计器中使用该函数。

    3)使用自定义函数

    在单元格中写入公式=Lunar(2016,10,17),预览模板便可以看到把日期 2016 年 10 月 17 日阳历转换成阴历了。

    222

    若数据库日期类型字段,拖到模板设计界面,设置高级属性,在自定义显示值里面输入公式Lunar(year($$$),month($$$),day($$$)),如下图设置,则可把保存在数据库里面的阳历日期转换成阴历了。

    222

    注:该自定义函数的日期类型参数只能是(2016,10,17)这个格式的日期,如果不相符合,则需要通过自定义显示将格式进行转换,如上所述。


    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持