使用jasperreports ,出现两个问题:
1。iReport 里面那个title band总共就几个字,为什么占用了整整一页?就算是没有,他仍然会有一个空页在前面。
2、$F,$P{},V{}的字段如何在java里面给它们赋值?我只知道$F{fieldName}只要在一个bean里有fieldName这样的属性,就可以了,把这样的bean List设置给dataSource就行了。<param name="dataSource">list</param>List list=new ArrayList();
  while(rs.next){
  Field obj=new Field();
  obj.setFieldName(rs.getString(1);
  ........
  list.add(obj);
}但是$P{a},V{b}这两个呢?

解决方案 »

  1.   

    第一点,用ireport慢慢调,如果不用,可以把它的高设为0
    第二点:
    $P{},就是从java程序给它传的参数,放在map里面,用JasperFillManager.fillReport时的第二个参数就是它
    $V{},就相当于在模板里定义的变量,它可以进行运算,但是不能用java赋值$F{},当然就是报表中的数据了,JasperFillManager.fillReport的第三个参数,用JRBeanCollectionDataSource包一下
      

  2.   

    你在edit--> property--> 下面的几个tab上选下, 有个  is title new page 之类的,把那个勾去掉
      

  3.   


    1 就看这个的吧,我用的老版本,不记得有这个参数,我是手工设置title的高度的。
    2 $F 是数据源的字段
    $P{} 是参数,可以通过发送一个Map过去进行赋值
    V{}是内部的变量,只能通过内部的$F,$P进行计算拿到,不能通过外部设置(那是$P的工作)
      

  4.   

    两个问题...第一.关于你上一贴...
    需要设置特定字体.
    例如:
    <font fontName="黑体" pdfFontName="STSong-Light" size="12" isBold="false" isItalic="false" isUnderline="false" isPdfEmbedded ="true" pdfEncoding ="UniGB-UCS2-H" isStrikeThrough="false" />
    注意:UniGB-UCS2-H,STSong-Light,黑体..要选择这些支持中文的字符集.title占了单独一页,确实是3楼的解决方法..
    在实际的jxml中.
    就是isTitleNewPage="false" isSummaryNewPage="false",意思是,标题title,末页summary说明,是否单独放在一页.
    实际上,相当于封面和封尾.$F代表的是重复迭代的数据字段..一般的,放入水晶报表的.都是集合..本质上是实现JRAbstractBeanDataSource中的几个指定方法.
    使水晶报表可以迭代这些数据字段.
    假设你的数据,全部查询出来.放入了一个集合List<Object>,
    Collection reportRows = list;
    JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(reportRows);
    之后就可以注入JasperPrint使用$P是非迭代,你需要应用的固定常量.这个不是在数据集合里面的.是一个Map parameters,这个常量参数,是生成JasperPrint时候,注入的.