Jasper reports 如何将数字转换为文字(iReport)

Jasper reports 如何将数字转换为文字(iReport),jasper-reports,Jasper Reports,例如,我想将1000转换为1000(货币)。我怎样才能在贾斯珀做到这一点 看 基于给定的实现创建一个类 编译该类并将其放在iReport可以读取该文件的目录中 更新iReport中的类路径以指向包含该类的目录(请注意与包名称空间的目录关系) 重新启动iReport 将文本字段表达式更改为:EnglishNumberToWords.convert($F{field\u name}) 您必须根据您的实现细节更改字段名称和转换方法的数据类型。Dave回答的替代方案: 1) 如果您的RDBMS支持它(例

例如,我想将1000转换为1000(货币)。我怎样才能在贾斯珀做到这一点

  • 基于给定的实现创建一个类
  • 编译该类并将其放在iReport可以读取该文件的目录中
  • 更新iReport中的类路径以指向包含该类的目录(请注意与包名称空间的目录关系)
  • 重新启动iReport
  • 将文本字段表达式更改为:
    EnglishNumberToWords.convert($F{field\u name})

  • 您必须根据您的实现细节更改
    字段名称和
    转换方法的数据类型。

    Dave回答的替代方案:

    1) 如果您的RDBMS支持它(例如HSQLDB),您可以创建一个用户定义、用户调用的函数,该函数接受字段的数据模型表示,并将其转换为表示层表示。例如,数据库在内部将时间戳存储为修改后的朱利安日数(双倍)。Java函数可以与数据库(SQL/JRT)一起编写和存储,以将UTC双精度转换为本地化的时间/日期字符串

    2) 编写SQL查询以生成包含报表中所需数据的表。不同之处在于,在源列上使用用户调用的SQL/JRT函数将其转换为结果表中的表示层

    3) 使用SQL查询(一旦您的SQL查询正常工作)作为CREATEVIEW(DDL)语句的基础

    4) 使用新定义的视图作为iReport数据源生成报表

    优点: 无需自定义iReports。您创建的视图可以作为任何报告工具的基础,而不仅仅是iReports

    缺点:
    这会在数据库和JRE以及(很可能)RDBMS之间创建依赖关系。为了访问用户调用的函数,您需要将函数存储在数据库中,并且它需要能够访问JRE以创建视图。有一个SQL/JRT标准,因此您的迁移目标RDBMS可能能够支持它,但肯定不能保证这一点。

    可能的重复不是重复。有许多技术细节未包含在显示如何在语言X中将数字转换为单词的解决方案的简单链接中。与iReport集成是另一个问题。您的意思是更改字段表达式吗?文本字段属性中的“文本字段表达式”。当我写“EnglishNumberToWords.convert($F{dtl_docamt})”时,它的出现错误“EnglishNumberToWords无法解析”@Dave Jarvis:我设置了类路径,它仍然出现错误。无法解析英语数字词。我还必须将字段数据类型更改为String@Dave贾维斯:类路径是.class还是.jar文件?@Chi:1。将英文数字单词放入JAR文件中。2.将JAR文件添加到类路径。3.请参见此图: