`

在JasperReport报表中加入大写金额(笔记)

    博客分类:
  • java
阅读更多

摘自 http://www.blogjava.net/hispark/archive/2008/11/19/241321.html

 

我们在制作单证或报表时,客户经常要我们把最后的合计数转写中文大写金额。这个需求很合理,但感觉并不容易实现,如何在JasperReport中加入大写金额的实现呢?提供一种实现的方法给大家参考。

实现思路:
在报表执行过程中使用scirptlet将存放着数字金额的变量读出转换成大写金额字符串后放入大写金额变量中。报表即可象显示普通字符变量一样显示大写金额。

TransChineseMoneyScriptlet.java代码

  1 /** */ /**
  2  * 大写金额转换Scriptlet类
  3  *
  4  *  @author  Spark (Email: spark.unt@gmail.com) 
  5   */

  6 public   class  TransChineseMoneyScriptlet  extends  JRDefaultScriptlet  {
  7      /**/ /*
  8      * 默认构造方法
  9       */

 10      public  TransChineseMoneyScriptlet()  {
 11     
 12     }

 13
 14      /** */ /**
 15      * 获得金额的汉字大写格式 <br>
 16      *  @param  money 小写金额字符串
 17      *  @return  大写的汉字金额
 18       */

 19      public   static  String getChineseMoney(String money)  {
 20         String text  =  transChineseMoney1(money)  +  transChineseMoney2(money);
 21         Pattern p  =  Pattern.compile( " 零分 " , Pattern.CASE_INSENSITIVE);
 22         Matcher m  =  p.matcher(text);
 23         text  =  m.replaceAll( "" );
 24          return  text;
 25     }

 26
 27      /** */ /**
 28      * 截得输入金额的整数部分,并将其转换成中文大写的格式 <br>
 29      * <br>
 30      * 其他描述:输入数字超过接受范围时拒绝转换并退出。<br>
 31      *  @param  传递参数字符串S 参数描述
 32      *  @return  返回转换后的字符串
 33       */

 34      public   static  String transChineseMoney1(String s)  {
 35         String ss  =  s;
 36         String tmpnewchar  =   "" ;
 37         String[] part  =  ss.split( " \\. " );
 38
 39          if  (part[ 0 ].length()  >   10 {
 40              //  超出可转换位数
 41              return   "" ;
 42         }

 43          for  ( int  i  =   0 ; i  <  part[ 0 ].length(); i ++ {
 44              char  perchar  =  part[ 0 ].charAt(i);
 45              if  (perchar  ==   ' 0 ' )
 46                 tmpnewchar  =  tmpnewchar  +   " " ;
 47              if  (perchar  ==   ' 1 ' )
 48                 tmpnewchar  =  tmpnewchar  +   " " ;
 49              if  (perchar  ==   ' 2 ' )
 50                 tmpnewchar  =  tmpnewchar  +   " " ;
 51              if  (perchar  ==   ' 3 ' )
 52                 tmpnewchar  =  tmpnewchar  +   " " ;
 53              if  (perchar  ==   ' 4 ' )
 54                 tmpnewchar  =  tmpnewchar  +   " " ;
 55              if  (perchar  ==   ' 5 ' )
 56                 tmpnewchar  =  tmpnewchar  +   " " ;
 57              if  (perchar  ==   ' 6 ' )
 58                 tmpnewchar  =  tmpnewchar  +   " " ;
 59              if  (perchar  ==   ' 7 ' )
 60                 tmpnewchar  =  tmpnewchar  +   " " ;
 61              if  (perchar  ==   ' 8 ' )
 62                 tmpnewchar  =  tmpnewchar  +   " " ;
 63              if  (perchar  ==   ' 9 ' )
 64                 tmpnewchar  =  tmpnewchar  +   " " ;
 65
 66              int  j  =  part[ 0 ].length()  -  i  -   1 ;
 67              if  (j  ==   0 )
 68                 tmpnewchar  =  tmpnewchar  +   " " ;
 69              if  (j  ==   1   &&  perchar  !=   0 )
 70                 tmpnewchar  =  tmpnewchar  +   " " ;
 71              if  (j  ==   2   &&  perchar  !=   0 )
 72                 tmpnewchar  =  tmpnewchar  +   " " ;
 73              if  (j  ==   3   &&  perchar  !=   0 )
 74                 tmpnewchar  =  tmpnewchar  +   " " ;
 75              if  (j  ==   4   &&  perchar  !=   0 )
 76                 tmpnewchar  =  tmpnewchar  +   " " ;
 77              if  (j  ==   5   &&  perchar  !=   0 )
 78                 tmpnewchar  =  tmpnewchar  +   " " ;
 79              if  (j  ==   6   &&  perchar  !=   0 )
 80                 tmpnewchar  =  tmpnewchar  +   " " ;
 81              if  (j  ==   7   &&  perchar  !=   0 )
 82                 tmpnewchar  =  tmpnewchar  +   " " ;
 83              if  (j  ==   8   &&  perchar  !=   0 )
 84                 tmpnewchar  =  tmpnewchar  +   " 亿 " ;
 85              if  (j  ==   9   &&  perchar  !=   0 )
 86                 tmpnewchar  =  tmpnewchar  +   " " ;
 87         }

 88          return  tmpnewchar;
 89     }

 90
 91      /** */ /**
 92      * 截得输入金额的小数部分,并将其转换成中文大写的格式 <br>
 93      * <br>
 94      * 其他描述:小数部分超过两位时系统自动截断。<br>
 95      * 
 96      *  @param  传递参数字符串
 97      * 
 98      *  @return  返回转换后的字符串
 99       */

100      public   static  String transChineseMoney2(String s)  {
101         String ss  =  s;
102         String tmpnewchar1  =   "" ;
103         String[] part  =  ss.split( " \\. " );
104
105          if  (ss.indexOf( " . " !=   - 1 {
106              if  (part[ 1 ].length()  >   2 {
107                  //  MessageDialog.openInformation(null,"提示","小数点之后只能保留两位,系统将自动截段");
108                 part[ 1 =  part[ 1 ].substring( 0 2 );
109             }

110              for  ( int  i  =   0 ; i  <  part[ 1 ].length(); i ++ {
111                  char  perchar  =  part[ 1 ].charAt(i);
112 //                 System.out.println(perchar);
113                  if  (perchar  ==   ' 0 ' )
114                     tmpnewchar1  =  tmpnewchar1  +   " " ;
115                  if  (perchar  ==   ' 1 ' )
116                     tmpnewchar1  =  tmpnewchar1  +   " " ;
117                  if  (perchar  ==   ' 2 ' )
118                     tmpnewchar1  =  tmpnewchar1  +   " " ;
119                  if  (perchar  ==   ' 3 ' )
120                     tmpnewchar1  =  tmpnewchar1  +   " " ;
121                  if  (perchar  ==   ' 4 ' )
122                     tmpnewchar1  =  tmpnewchar1  +   " " ;
123                  if  (perchar  ==   ' 5 ' )
124                     tmpnewchar1  =  tmpnewchar1  +   " " ;
125                  if  (perchar  ==   ' 6 ' )
126                     tmpnewchar1  =  tmpnewchar1  +   " " ;
127                  if  (perchar  ==   ' 7 ' )
128                     tmpnewchar1  =  tmpnewchar1  +   " " ;
129                  if  (perchar  ==   ' 8 ' )
130                     tmpnewchar1  =  tmpnewchar1  +   " <span styl
分享到:
评论

相关推荐

    ireport402增加金额转大写的java

    在JasperReport报表中加入大写金额,在报表执行过程中使用scirptlet将存放着数字金额的变量读出转换成大写金额字符串后放入大写金额变量中。报表即可象显示普通字符变量一样显示大写金额。

    jasperIreport +Ireport实现金额大写

    Ireport实现金额大写 在irport里面写script脚本 完成转换

    jasperreport一个子报表的例子

    在JasperReport中,子报表是用于在主报表内部嵌套其他报表的一个功能,可以用来组织和展示更复杂的结构化数据。标题、描述和标签提示我们,这个例子将围绕如何使用JasperReport创建并集成子报表展开。 首先,我们要...

    JasperReport 中交叉报表指南

    在 JasperReport 中,交叉报表需要设置 subDataSets 数据源。subDataSets 是一种特殊的数据源,它可以从外部数据源中获取数据,并将其存储在内存中,以便于报表生成。要设置 subDataSets 数据源,需要在报表设计中...

    JasperReport报表设计总结

    JasperReport是一款强大的Java报表工具,它允许开发者创建复杂、多格式的报表,并能与各种数据源集成。...在实际项目中,应根据具体情况选择合适的数据源和报表设计方法,确保报表功能的稳定和高效。

    Ireport实现金额大写(自己实现的)

    4. **调用转换函数**:在报表中,你可以将这个转换函数绑定到一个字段或者表达式上,以便在生成报表时自动将金额字段转换为大写。例如,可以创建一个Java表达式`PositiveIntegerToHanStr($F{amount}.toString())`,...

    iReport-JasperReport 报表开发指南

    《iReport-JasperReport 报表开发指南》是一本针对初学者的专业教程,旨在帮助读者...在实际工作中,报表系统对于决策支持和业务分析至关重要,因此,掌握iReport和JasperReport的使用技巧将对你的IT职业生涯大有裨益。

    Struts2+JasperReport报表应用

    这些库包括JasperReport的核心库jasperreports.jar,以及可能需要的额外库如iTextAsian.jar,以支持中文字符在PDF报表中的正确显示。此外,可能还需要Struts2的特定插件或配置,以确保框架能够与JasperReport顺利...

    JasperReport报表成型框架

    总结,JasperReport作为一个灵活的报表工具,为开发者提供了丰富的报表设计和数据呈现方式,使其能够在各种Java应用中生成高质量的报表。配合详细的文档和开发注意事项,可以有效地提高开发效率和报表质量。对于那些...

    Struts2与Jasperreport报表结合

    在JasperReport中,iBatis可以用于从数据库中检索报表所需的数据。通过XML映射文件,iBatis可以动态地执行SQL,将查询结果转换为Java对象,供JasperReport使用。 JasperReport3.1.4是报表设计和生成的核心组件。它...

    ireport-5.6.0 Jasperreport 报表工具 jar包大全

    "ireport-5.6.0 Jasperreport 报表工具 jar包大全" 这个标题提到了两个关键组件:iReport和JasperReport,它们都是用于创建和设计报表的重要工具,尤其在Java开发环境中广泛使用。标题中的“5.6.0”是这两个工具的...

    JasperReport动态报表归并行数据

    在“JasperReport动态报表归并行数据”这个主题中,我们主要讨论如何利用JasperReport来处理和展示动态变化的数据,并实现数据的合并。 1. **动态报表设计**: JasperReport支持XML或Java代码定义报表模板(jrxml...

    jasperreport报表开发小结.docx

    首先在 ireport 中设计报表模板,生成 XML 格式的文件,编译后生成 jasper 后缀的二进制文件。将编译好的.jasper 文件拷贝到 WEB 工程下,通过代码填充数据源生成最终的报表。 五、ireport 使用说明 Jaspersoft ...

    jasperreport报表模板预览 applet与servlet通信

    标题中的“jasperreport报表模板预览 applet与servlet通信”揭示了本文将要讨论的重点,即如何在Java环境中使用JasperReport库创建报表模板,并通过Applet和Servlet进行数据交互来实现预览功能。JasperReport是一个...

    iReport-5.6.0 Jasperreport 报表

    7. **子报表和分组**:通过子报表功能,可以在一个主报表中嵌套其他报表,以呈现更复杂的结构。分组功能则可以根据特定字段对数据进行分类。 8. **变量和计算**:iReport支持定义变量,用于计算和存储报表中的值,...

    springboot整合JasperReport实现报表功能

    在SpringBoot中整合JasperReport,首先你需要在项目中添加相应的依赖。在`pom.xml`文件中,引入JasperReport和SpringBoot对PDF处理的支持,例如: ```xml &lt;!-- JasperReport --&gt; &lt;groupId&gt;...

    JasperReport 水晶报表

    - **集成:** 水晶报表在.NET环境中的集成更加紧密,而JasperReport更适应Java生态系统。 **4. 使用JasperReport的步骤:** - 设计报表模板:使用iReport或Jaspersoft Studio创建报表布局。 - 连接数据源:配置报表...

    jasperReport测试项目(含报表设计文件).rar_jasperReport 设计报表_jasperreport_报表设

    在本项目中,“jasperReport测试项目(含报表设计文件).rar”是一个压缩包,包含了一系列用于JasperReport报表设计的文件,帮助我们理解和实践报表开发。 报表设计是JasperReport的核心功能,通过使用JRXML文件,...

    JasperReport动态生成报表

    **JasperReport动态生成报表** JasperReport是一款强大的开源报表工具,主要用于生成各种复杂的静态和动态报表。它基于Java,可以很好地与Java应用程序、Web应用和企业级应用集成,提供丰富的报表设计和灵活的数据...

Global site tag (gtag.js) - Google Analytics