Chinaunix首页 | 论坛 | 博客
  • 博客访问: 256278
  • 博文数量: 79
  • 博客积分: 3450
  • 博客等级: 中校
  • 技术积分: 875
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-18 13:12
文章分类

全部博文(79)

文章存档

2011年(1)

2010年(3)

2009年(19)

2008年(23)

2007年(15)

2006年(18)

我的朋友

分类: Java

2009-04-02 15:02:33

JasperReport 常见问题
  1. .jrxml vs .jasper
    • 如果在运行时载入.jrxml, 那么每次调用还得编译, 不如预先编译成.jasper.不过预先编译的jasper,必须用同样版本的JasperReport载入,而且灵活性差些. 不过对于大部分报表,还是预先编译成jasper方便
  2. 如果批量编译jrxml
    • 用Ant很容易解决



      .....


  3. 如何使用图片?
    • 很容易,用Image控件就可以了. 在Image Express里面可以用String来表示图片的路径, 或者用InputStream, File对象.不过不管用File还是String对象, 都不得不用绝对路径, 这显然很不灵活. 解决办法是,穿入一个$P的参数,表示图片所在的目录,然后用$P和文件名拼接出完整的绝对路径. 更好的方法是用InputStream, 例如this.getClass().getResourceAsStream("logo.jpg") ,这时只要把图片放在当前.jasper所在的目录就可以了,不必考虑什么参数,什么路径了
  4. 显示非数据库字段变量
    • 显示如运行日期等,可以直接在Text Field里面输入new java.util.Date(), 然后把Pattern设成如mm/dd/yyyy.
  5. 动态控制某些Field是否显示
    • 每个Static Text, Text Field甚至整个Band的属性里面都有Print When Expression, 比如设成new Boolean(!$P{isDisplay}.equalsIgnoreCase("yes")), 那么只有当参数display的值为yes的时候才显示
  6. 使用Sub Report, 如何使用相对路径
    • 见1.3, 和使用图片类似, 用InputStream或者传入参数
  7. Query里面如何使用参数
    • $P!{xxx} 或者 $P{xxx} 后者只能用于类似PreparedStatement参数绑定, 而前者可替换Sql的任意部分. 在需要动态排序的时候, 前者特别有用. 比如 select a,b,c from t order by $P!{orderClause} 不管用$P还是$P!, SQL最终是以PreparedStatement方式执行的, 不必太担心性能问题 注意:参数是不能嵌套的, 比如$P{a} =''$P{b}'' , $P{b}=''value'', 不要指望$P{a}能被替换成''value''
  8. 如何使用图表(Graph)
    • JasperReport本身没有图表功能, 只有显示Image的功能(见4.3). iReport里有个Graph向导, 其实质是通过jFreeChart生成Image. 更另外, 更直接的做法是放一个Image控件, Image Express Class设置成java.awt.Image, 在Image Expression里通过自定义的类返回java.awt.Image对象. 例如''GraphProvider.getImage($P{REPORT_DATASOURCE},title, subtitle.....)''. GraphProvider是自己的类, public static Image getImage(JRDataSource, ....)

  1. iReport
  2. 安装
    1. 下载,解压iReport 0.4.0 (推荐src版本)
    2. 确认JDK是1.4以上
    3. 把JDK /lib下的tools.jar拷贝到{ireport_home}/lib目录中
  3. 运行
    1. 对于下载的Binary版本,只能运行/bin/startup.bat
    2. 对于下载的Src版本,可以通过ant iReport运行(先安装ant)
    3. 如果运行startup.bat,出现java.lang.NoSuchMethodError错误,一般是JDK版本太低。如果确认已安装了1.4或以上,检查path系统变量,看看有1.3的JRE是不是排在前面(比如安装了Oracle的客户端,往往有1.3的JRE),如果出现Class Not Found,检查classpath。对于通过ant的方式运行,一般都没什么问题,所以推荐下载src版本
  4. JasperReport 常见问题
    1. .jrxml vs .jasper
      • 如果在运行时载入.jrxml, 那么每次调用还得编译, 不如预先编译成.jasper.不过预先编译的jasper,必须用同样版本的JasperReport载入,而且灵活性差些. 不
阅读(607) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~