ireport工具制作jasper模板报表

ireport工具制作jasper模板报表
2010-03-18 17:02


ireport工具制作jasper模板报表
-----------------------------------------------------
**********----------------------*********************
1.下载iReport-3.0.0zip 解压后,要注意一点,把你的JDK的tools.jar拷到你解压后的iReport的lib目录下,做中文的pdf报表还需要把iTextAsian.jar拷到lib下,如果你用的是Oracle的数据库,那么你还需要把class12.jar也就是Oracle的Jdbc包拷到iReport的lib下,其他数据库也一样。
准备工作做好了,运行iReport.bat。如果能看到UI界面,说明iReport成功运行了。
**********----------------------*********************
2. 如果没有成功。按以下步骤可解决该问题:
确定系统安装有JDK,而且系统环境设置,path里有JDK的bin目录,并有java_home参数,以下是我的几个参数的配置情况可供参考:
(1) java_home   D:\JBuilder9\jdk1.4
(2) path        D:\JBuilder9\jdk1.4\bin;D:\Install\ant161\bin
(3) classpath    D:\iReport042\fonts;E:\Project\EssV6\webapps\WEB-INF\classes
(4) ant_home   D:\Install\ant161
**********----------------------*********************
3.如果绿色解压版的JDK,一定要在环境变量中设置java_home,
把你的JDK的tools.jar拷到你解压后的iReport的lib目录下。

**********----------------------*********************
4、详细资源
iReport官方提供了一些关于iReport视频,对于初学者很有帮助:
   地址:http://ireport.sourceforge.net/docs.html

JasperReport官方提供的使用指南
地址:http://jasperreports.sourceforge.net/tutorial/index.html

JasperReport提供的一些例子:
地址:http://jasperreports.sourceforge.net/samples/index.html


**********----------------------*********************
5、常见问题
(1)、iReport中提示框输入中文是不能正常显示,请将iReport下lib中的这个包删除tinylaf.jar
   2)、在iReport中运行报表时如果出现乱码问题,请检查itext-1.02b.jar和iTextAsian.jar这两个包是否加到CLASSPATH
(3)、在jsp或servlet高度报表时出现乱码或不显示,请检查你在报表设计过程中所设置的字体及其编码
比如:pdfname、pdfencoding

**********----------------------*********************

6.jasperReport是一个以java实现的报表工具,
种就是写jrxml文件,其实就是xml文件,只不过是后缀名不一样罢了。

(1)、iReport的输出格式
iReport的预览输出格式可以支持以下几种:

PDF、HTML、CSV、JAVA2D、Excel、纯文字、JRViewer,其中最常用的是PDF、JRViewer。本文以JRViewer为例子。JRViewer是直接以C/S方式作为报表的输出格式,在JFrame框架下输出。Jasperreport提供默认的JRViewer输出类。

(2)、报表的动态对象变量、参数、字段
在使用iReport的过程中会碰到很多与变量(Variables)、参数(Parameters)、字段(Fields)这些有关的内容,我们要介绍这些对象的使用和意义:

·字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。比如一个ID的所有值。$F{ filedsName }

·参数(Parameters):这是你的应用需要提供给报表的入口,比如你希望在报表被解释的时候提供Where语句的条件值,那么就可以使用参数(Parameters)。$P{ parameterName }

·变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。$V{ variablesName }

每种对象的定义格式如每个对象的后面说明,比如定义一个变量(Variables),那么表达式就写成$V{ variablesName },报表中出现的就是这个变量的名称。后文会详细的介绍使用方法。

(3)、编译、静态运行、动态运行
Jasperreport运行时需要的就是一个jasper后缀的文件,编译过程其实就是把jrxml后缀的文件生成jasper后缀的文件。(可以参考Jasperreport的运行原理)

静态运行和动态运行是相对的,后者带数据源运行,比如带数据库运行。前者就是静态文本运行,和数据源无关,如果报表中出现和数据源有关的对象,则以null显示。

(4)、报表结构
       一个报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。

·Title:每个报表一般会有一个名字,比如×××销售报表,title就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在合适的地方。

·pageHeader:报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。

·columnHeader:无可非议的这里是放置列的名称,记住不是列数据。

·Detial:放置需要循环的数据,比如销售记录数据。

·columnFooter:放置列级别的统计计算值或是列的说明。

·pageFooter:放置页级别的统计值或是页的说明。

·Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,那么放置这些统计记录的统计值最好的地方就是summary。

·groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好的地方。

·Groupfooter:放置组的统计或是说明


**********----------------------*********************
7.简单的报表详细制作过程:
(1).新建一个空报表文档, (文件 -> 新建文档 -> 填写 报表名称 -> 确定)。
(2).标题Title 和 列头 ColumnHeader 一般要用 staticText属性 , (编辑 -> 插入元素 -> 静态文本 拖入到所要安放的位置,写入文字即可)。
(3).查询数据的显示,(数据 -> 数据源链接 -> 添加 -> 数据库 JDBC连接 -> 下一步 (启动数据库) -> 输入信息 测试 -> 测试成功后保存) (数据 -> 报表查询 -> 写查询 SQL 后 确定 -> 在刷新文档结构中的字段 就会出现 SQL 的字段信息 直接拖放即可)。
(4).以上信息 操作完成 后,另存报表文档 (或 构建 -> 编译 )会生成 jrxml 文件,(接着执行 构建 -> 执行报表(使用活动连接) (在 构建 -> 选中Excel查看 ) 即可 生成 jasper文件 和 Excel文件(预览效果))。


**********----------------------*********************
8.用ireport 工具制作 jasper报表时,生成 jrxml 文件,
将jrxml 文件 进行编译 生成 jasper文件。

(1).此方法 是将 jrxml 文件 编译 生成 jasper文件。
package cn.com.common.jasper;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.util.JRProperties;
import net.sf.jasperreports.view.JasperViewer;

public class CompileJasperReport {
public static void main(String[] args){
   try {
//    String libsPath="WEB-INF/lib/jasperreports-1.3.3.jar";
//    JRProperties.setProperty(JRProperties.COMPILER_CLASSPATH, libsPath);
//    System.setProperty("jasper.reports.compile.class.path", libsPath);

    //编译report.jrxml并在report.jrxml所在的目录中生成report.jasper文件
             JasperCompileManager.compileReportToFile("E:\\report\\baobiao.jrxml");   //"report.jrxml"
             //填充数据,这里使用的是JREmptyDataSource
             JasperFillManager.fillReportToFile("E:\\report\\report.jasper", null, new JREmptyDataSource(50));
             //预览报表,false代表不是使用xml文件。
             JasperViewer view = new JasperViewer("E:\\report\\reports.jrprint", false);
             view.pack();
             view.setVisible(true);
          }
          catch (Exception e) {
             e.printStackTrace();
          }
    }
}

(2).   
  
  
  
  
  
     BaobiaoReport
Compile is ok  
  
  
  
  
 

**********----------------------*********************
9.Java工程中调用 jasper报表模板:
(切记工程中添加jasperreports-3.0.0.jar 包)


//使用LIST数据源填充
   String userDir=System.getProperty("user.dir");
   String userdir=userDir.replace("bin", "webapps/JavaProject/").replace("\\", "/");
           File jarfile = new File(userdir+"yxyc.jasper");
     // 加载
   JRXlsExporter exporter = new JRXlsExporter();
   try {
    JasperReport report = (JasperReport) JRLoader.loadObject(jarfile.getPath());
                        List liList = object.objectList();
    JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(liList);
                        JasperPrint print = JasperFillManager.fillReport(report, null,ds);
    response.setContentType("application/vnd.ms-excel");
                       
                        // response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");

    // 输出excel文件
    FileOutputStream output = new FileOutputStream("c:\\baobiao.xsl");

                        exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
    exporter
      .setParameter(JRExporterParameter.CHARACTER_ENCODING, "GBK");
    exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
      "report.xls");
    exporter.setParameter(
      JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
      Boolean.TRUE);
    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
      Boolean.FALSE);
    exporter.setParameter(
      JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
      Boolean.FALSE);
    exporter.setParameter(
      JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
      Boolean.TRUE);//空白地方
    exporter.setParameter(
      JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
      Boolean.FALSE);
    exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM,
      response.getOutputStream());
    exporter.exportReport();
                 } catch (Exception e) { }


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yangliuhbhd

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值