ireport+jasperreport 成果心得

    1、首先理解和明白二者之间的关系、ireport相当于画画面的(xml格式,因为不好掌握所以有此软件的诞生,解决这样的麻烦),jasperreport相当于传值的,导出pdf等格式的。当然ireport也可以自己生成pdf,但对于比较复杂的就需要二者结合了。

 

   2、二者配置的时候要注意版本的一致性,如果不一致会报错的invalid..... 什么错误。如果不一致,简单改法:ireport安装目录中有jasperreport的jar包,直接用这个就可以兼容了。

   3、中文乱码或不显示问题:如下

           PDF   font   name:   STSong-Light;

     pdfEncoding   =UniGB-UCS2-H ;

    将PDF   embedeed   encoding前的勾选上,并在下拉表中选择UniGB-UCS2-V   (Chinese  Simplified)

  4、写java代码不识别这种字体的话会显示无法load这种字体,那么可以把ireport的lib下的“iTextAsian.jar”包拷贝一下。

  5、传值的时候传的是param,不是变量,这是自己犯得低级错误。呵呵

注意:如果ireport下没有这个包,就需要下载,否则ireport的字体也是无法选择的。

  6、ireport支持jdbc的数据源:

     建立数据源之后,可以直接在报表查询中写sql语句,注意在这里多表 查询的时候要用inner,内连接、外连接、union等,或子查询,才能够识别,直接用等号连接两个表是不识别的。还有简便的方法:就是直接用视图。一切就ok了。这种方式自己认为适合不太复杂的报表,对于还需要很多计算的报表应该用javabean的数据源。

  7、ireport支持javabean的数据源:已存完值的bean作为数据源。注意这个数据源是个list。因为可能会多条循环的。

     配置ireport的class路径。在选项中设置类的路径。javabean只识别编译后的class;

     设置javabean数据源:设置时需要事先定义一个工厂,来生成上边说的lsit。然后把工厂类名,产生list的static方法名写好,测试连接;

     Field的产生,在报表查询中选择javabean数据源,在上边写上具体的bean。读取属性,就ok了。

  8、子报表的建立:可以理解为一对多的关系

     主要是传值问题:对于jdbc是一个数据源就直接传默认的就行了;但是对于javabean则不行,子报表的数据源 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{list}),相当于再主报表中list中的mainbean又嵌套了sublist,在sublist中存的是submainbean。把这个mainbean的list传过去就ok了。

     注意:报表编译时,先编译子报表,后编译主的。 而且对于javabean的子报表,编译子的时候要选择空的数据源,因为数据源始传过来的,编译时肯定没有,否则编译报错,提示找不到子bean中的字段。

    

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章