历史版本1 :创建程序报表 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:
由上一小节我们可以了解到所谓的网络报表就是指实现了Reportlet接口的类,可以在Web浏览器端直接访问,展示出我们通过程序设计的报表。
上一节中我们是直接读取cpt模板文件生成的网络报表,为了您更加理解网络报表的原理,该节我们介绍如何在程序中创建程序网络报表。
实例:新建一个报表,在A1单元格内插入FineReport这个字符串,对字符串进行格式设置,发布后通过浏览器来浏览,最终效果如下

1. 实现步骤编辑

1.1 新建报表
新建CreateReportletDemo类,继承com.fr.web.Reportlet这个抽象类,并实现createReport(ReportletRequest arg0)方法,最终返回一个WorkBook。
HTML/XML代码
//创建一个WorkBook工作薄,在工作薄中插入一个WorkSheet  
WorkBook workbook = new WorkBook();  
WorkSheet sheet1 = new WorkSheet();  
workbook.addReport(sheet1);  
return workbook;  
1.2 插入单元格
由API概述可以知道,worksheet就是由单元格组成的,因此我们往创建的sheet1中插入单元格,编辑单元格内容,并设置单元格格式
创建一个单元格
HTML/XML代码
new DefaultCellElement(int column, int row, Object value)  
示例:列为0,行为0,值为FineReport,即A1单元格,并设置单元格的样式
HTML/XML代码
TemplateCellElement CellA1 = new DefaultTemplateCellElement(0, 0, "FineReport");    
    Style style = Style.getInstance();  
字体为Arial,粗体,字号20,红色
HTML/XML代码
FRFont frfont = FRFont.getInstance("Arial", 1, 20.0F, Color.red);    
    style = style.deriveFRFont(frfont);    
    CellA1.setStyle(style);    
    sheet1.addCellElement(CellA1);  
设置第0列列宽为150px,第0行行高为35px
HTML/XML代码
sheet1.setColumnWidth(0, new OLDPIX(150.0F));    
    sheet1.setRowHeight(1, new OLDPIX(35.0F));  
这样一张最简单的程序网络报表便形成了,完整代码如下
HTML/XML代码
//创建程序报表  
package com.fr.demo;    
  
import com.fr.base.Style;    
import com.fr.general.FRFont;    
import com.fr.main.TemplateWorkBook;   
import com.fr.main.impl.WorkBook;  
import com.fr.report.cell.DefaultTemplateCellElement;    
import com.fr.report.cell.TemplateCellElement;   
import com.fr.report.worksheet.WorkSheet;  
import com.fr.stable.unit.OLDPIX;  
import com.fr.web.core.Reportlet;  
import com.fr.web.request.ReportletRequest;   
import java.awt.Color;    
import java.util.Map;  
    
public class CreateReportletDemo extends Reportlet    
{    
  public TemplateWorkBook createReport(ReportletRequest arg0)    
  {    
    //创建一个WorkBook工作薄,在工作薄中插入一个WorkSheet      
    WorkBook workbook = new WorkBook();    
    WorkSheet sheet1 = new WorkSheet();    
    
    TemplateCellElement CellA1 = new DefaultTemplateCellElement(0, 0,     
      "FineReport");    
    Style style = Style.getInstance();    
    
    FRFont frfont = FRFont.getInstance("Arial", 1, 20.0F, Color.red);    
    style = style.deriveFRFont(frfont);    
    CellA1.setStyle(style);    
    sheet1.addCellElement(CellA1);    
    
    sheet1.setColumnWidth(0, new OLDPIX(150.0F));    
    sheet1.setRowHeight(1, new OLDPIX(35.0F));    
    workbook.addReport(sheet1);    
    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
1.3 发布并预览
编译源java文件,将生成的CreateReportletDemo.class类保存至应用WEF-INF\classes\com\fr\demo下,启动服务器,在浏览器中输入地址
http://localhost:8075/WebReport/ReportServer?reportlet=com.fr.demo.CreateReportletDemo

便可以看到我们定义的网络报表了