历史版本2 :程序网络报表 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

1. 程序网络报表概念编辑

FineReport设计器基本可以零编码地设计出绝大多数报表,然而需求是千变万化的,也许某些个性化的功能通过设计器无法实现,此时就如上一节中介绍的,可以将模板读入程序中,进行修改后再导出,再在浏览器中访问报表。显然这样做比较繁琐,对于这种情况,您可以直接将读取的模板保存为程序网络报表,直接在Web端访问定义的程序网络报表。
下面我们做个简单的程序调用报表,实现读取Parameter.cpt,然后在浏览器中直接访问该网络报表。

2. 实现步骤编辑

2.1 定义程序网络报表
程序网络报表所在类需要继承com.fr.web.reportlet这个抽象类,并且需要实现createReport(ReportletRequest arg0)这个方法,并返回报表对象。
具体代码如下:
HTML/XML代码
//程序网络报表  
package com.fr.demo;    
    
import java.util.Map;  
  
import com.fr.base.Env;  
import com.fr.base.FRContext;   
import com.fr.main.TemplateWorkBook;    
import com.fr.web.core.Reportlet;  
import com.fr.web.request.ReportletRequest;  
import com.fr.io.TemplateWorkBookIO;    
   
    
public class SimpleReportletDemo extends Reportlet {    
    public TemplateWorkBook createReport(ReportletRequest reportletrequest) {    
        // 新建一个WorkBook对象,用于保存最终返回的报表    
        Env oldEnv = FRContext.getCurrentEnv();    
        TemplateWorkBook WorkBook = null;    
        try {    
            // 读取模板,将模板保存为workbook对象并返回    
            WorkBook = TemplateWorkBookIO.readTemplateWorkBook(oldEnv,    
                    "\\doc\\Primary\\Parameter\\Parameter.cpt");    
        } catch (Exception e) {    
            e.getStackTrace();    
        }    
        return WorkBook;    
    }  
  
    @Override  
    public void setParameterMap(Map arg0) {  
        // TODO Auto-generated method stub  
          
    }  
  
    @Override  
    public void setTplPath(String arg0) {  
        // TODO Auto-generated method stub  
          
    }    
}  
注:最新的代码链接fine-help
2.2 编译生成类文件
在java开发平台中会自动编译,在此不再详述。
2.3 发布并Web预览
将编译后的SimpleReportletDemo.class放到网络报表根目录下,由于该类在包com.fr.demo中,因此存放在WEB-INF\classes\com\fr\demo下,保存后启动服务器,如内置服务器,在浏览器中输入下地址:http://localhost:8075/WebReport/ReportServer?reportlet=com.fr.demo.SimpleReportletDemo,便可以看到效果。