JAVA代码调用birt报表

JAVA调用BIRT设置的SCRIPT数据集
数组方式:
第一步:定义一下JAVA,class(看后面附件)
第二步:定义一个LIST
第三步:在BIRT报表的DATASET事件中(open)中输入
  

count = 0;
   cf = new Packages.user.ContactListFactory();
   c = cf.createContactList();


在BIRT报表的DATASET事件中(CLOSE)中输入 
  

cf=null; c=null;

在BIRT报表的DATASET事件中(FETCH)中输入
 

if (count <= c.length-1){
   row["columnFirstName"] = c[count].getFname();
   row["columnLastName"] = c[count].getLname();
   row["columnPhoneNumber"]= c[count].getPhone();
   count ++; return true; }
   return false;


   
List方式
第一步:定义一下JAVA,class(看后面附件)
第二步:定义一个LIST
第三步:在BIRT报表的DATASET事件中(open)中输入

importPackage(Packages.com.jshx);
count=0;
users=reslut;



在BIRT报表的DATASET事件中(CLOSE)中输入 

cf=null; c=null;



在BIRT报表的DATASET事件中(FETCH)中输入

if (count<=users.size()){
   row["columnFirstName"] = users.get(count).getFname();
   row["columnLastName"] = users.get(count).getLname();
   row["columnPhoneNumber"]= users.get(count).getPhone();
   count++; return true; }
   return false;



###############################################

                                               附件

################################################
Contact类

package com.jshx;

public class Contact {
	String fname;
    String lname;
    String phone;
    public Contact(String fname, String lname, String phone){
      this.fname = fname;
      this.lname = lname; 
      this.phone = phone; 
    }
    /*
     * 
     * @return Returns the fname. 
     */
     public String getFname() {
      return fname;
     } 
     /** 
     * @param fname The fname to set. 
     */ 
     public void setFname(String fname) { 
       this.fname = fname; 
     }
     /** 
     * @return Returns the lname. 
     */
      public String getLname() {
        return lname; 
      } 
      /** 
      * @param lname The lname to set. 
      */ 
      public void setLname(String lname) { 
         this.lname = lname; 
      } 
      /** 
      * @return Returns the phone. 
      */ 
      public String getPhone() { 
        return phone; 
      } 
      /** 
      * @param phone The phone to set. 
      */ 
      public void setPhone(String phone) {
       this.phone = phone; 
      }
}



ContactListFactory类

package com.jshx;

import java.util.ArrayList;
import java.util.List;

public class ContactListFactory {
	public Contact[] createContactList(){
        Contact[] c = new Contact[5]; 
        c[0] = new Contact("stavros", "kounis", "2310886269"); 
        c[1] = new Contact("dimitris", "kounis", "2310888270"); 
        c[2] = new Contact("dimitris", "adamos", "2310998417"); 
        c[3] = new Contact("nikos", "koufotolis", "2321013770"); 
        c[4] = new Contact("yan", "liang", "13824745919"); 
        return c; 
       }
	public List<Contact> createList(){
		List<Contact> c = new ArrayList<Contact>(); 
        c.add(new Contact("stavros", "kounis", "2310886269")); 
        c.add(new Contact("dimitris", "kounis", "2310888270")); 
        c.add(new Contact("dimitris", "adamos", "2310998417")); 
        c.add(new Contact("nikos", "koufotolis", "2321013770")); 
        c.add(new Contact("yan", "liang", "13824745919")); 
        return c; 
       }
}



ExecuteReport类

package com.jshx;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;

import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineConstants;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.HTMLRenderContext;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.ReportEngine;

public class ExecuteReport {  
//报表
 public static void executeReport() throws EngineException{
 	
 	//Engine Configuration - set and get temp dir, BIRT home, Servlet context
 	EngineConfig config = new EngineConfig();
 	config.setEngineHome("D:/soft/Tomcat6/virtualdir/birt/runtime/ReportEngine"); 

 	//Create the report engine
 	ReportEngine engine = new ReportEngine(config);
 	
 	//Open a report design - use design to modify design, retrieve embedded images etc. 
 	IReportRunnable design = engine.openReportDesign("D:/soft/Tomcat6/virtualdir/birt/report/kenScripDataset.rptdesign");
 	
 	//Create task to run the report - use the task to execute and run the report,
 	IRunAndRenderTask task = engine.createRunAndRenderTask(design);
 	
 	//Set Render context to handle url and image locataions
		HTMLRenderContext renderContext = new HTMLRenderContext();
		renderContext.setImageDirectory("image");
		HashMap contextMap = new HashMap();
		contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext);
		task.setAppContext( contextMap );
		  
//传数组
/*ContactListFactory cf = new ContactListFactory();
  Contact[] c = cf.createContactList();
  task.addScriptableJavaObject("reslut", c);*/

//传LIST
		ContactListFactory cf = new ContactListFactory();
		List<Contact> c = cf.createList();
		  task.addScriptableJavaObject("reslut", c);
		  
		//Set rendering options - such as file or stream output, 
		  //output format, whether it is embeddable, etc
		HTMLRenderOption options = new HTMLRenderOption();
		options.setOutputFileName("D:/soft/Tomcat6/virtualdir/birt/report/kenScripDataset.html");
		options.setOutputFormat("html");
		task.setRenderOption(options);
		
		//run the report and destroy the engine
		task.run();
		  
		engine.destroy();
 }
}



Reporttest类

public class Reporttest {
	public static void main(String args[]) {
        try {
         ExecuteReport mreport = new ExecuteReport();
         mreport.executeReport();
        }catch ( Exception e ) {
         e.printStackTrace();
        }
      }
}


转载于:https://my.oschina.net/amoswork/blog/277734

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值