`
duanfei
  • 浏览: 732315 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JAVA调用BIRT设置的SCRIPT数据集

阅读更多

把编译好的类,连同包路径,一起放到Eclipse的Birt插件下面
比如我的就是在
c:\software\Birt2.6.2\plugins\org.eclipse.birt.report.viewer_2.6.2.r262_v20110214\birt\WEB-INF\classes\SimpleClass.class,
当然你的类如果带有包,比如com.jshx.SimpleClass, 那么你必须把整个的com包都放到classes下面

数组方式:
第一步:定义一下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);
reslut=reslutList;
count=0;


在BIRT报表的DATASET事件中(CLOSE)中输入
reslut=null; 


在BIRT报表的DATASET事件中(FETCH)中输入
if (count<=reslut.size()){
   row["columnFirstName"] = reslut.get(count).getFname();
   row["columnLastName"] = reslut.get(count).getLname();
   row["columnPhoneNumber"]= reslut.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; 
       }
}


公共方法类
CommonFunc.java

package com.jshx.util;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class CommonFunc {
	private static final Log logger = LogFactory.getLog(CommonFunc.class);
	/**
	 * 获取当前项目的绝对路径  
	 * @param classesPath
	 * @return
	 */
    public static String getPorjectPath(String classesPath){   
      String tempdir;
      String classPath[] = classesPath.split("webapps");
      tempdir=classPath[0];
      if(!"/".equals(tempdir.substring(tempdir.length()-1))){
    	  tempdir += "/";
      }
      return tempdir;   
    }
	
	 /**
     * 日期转为字符串
     * @param date
     * @param formatStr
     * @return
     */
    public static String ConvertDateToStr(Date date,String formatStr)
	{
		try {
			SimpleDateFormat format = new SimpleDateFormat(formatStr);
			return format.format(date);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}



Constants.java

package com.jshx.util;

/**
 * 常量类 <功能详细描述>
 * @author duanpf
 * @version [版本号, 2012-12-8]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */

public class Constants{
	// Field descriptor #6 Ljava/lang/String;
	public static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
	  
	// Field descriptor #6 Ljava/lang/String;
	public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
	  
	// Field descriptor #6 Ljava/lang/String;
	public static final String YYYY_MM_DD = "yyyy-MM-dd";
	
	// Field descriptor #6 Ljava/lang/String;
	public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
	
	public static final String YYYYMM = "yyyyMM";
	
	public static final String YYYY = "yyyy";
	
	public static final String MM = "MM";
	
	public static final String birtRunTime = "virtualdir/birt/runtime/ReportEngine";
	
	public static final String birtPath = "virtualdir/birt/report/";
}


ExecuteReport类

package com.jshx;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.log4j.Logger;
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.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.ReportEngine;

import com.jshx.util.CommonFunc;
import com.jshx.util.Constants;

public class ExecuteReport {
public static Logger logger = Logger.getLogger(ExecuteReport.class);
 
 /**
	 * 
	 * @param paraMap 传入需要在报表中展示的值,或LIST集合
	 * @param rptdesign	报表模板
	 * @param outFlie	输出的文件名
	 * @param outType	输出的文件类型
	 * @return
	 * @throws EngineException
	 */
 public String executeReport(Map<String, Object> paraMap,String rptdesign,String outFlie,String outType) throws EngineException{
 	String classesPath = this.getClass().getClassLoader().getResource("").getPath();
 	String realPath= CommonFunc.getPorjectPath(classesPath);
 	
 	//Engine Configuration - set and get temp dir, BIRT home, Servlet context
 	EngineConfig config = new EngineConfig();
 	logger.info("运行时路径="+realPath+ Constants.birtRunTime);
 	config.setEngineHome(realPath+ Constants.birtRunTime); 

 	//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(realPath+ Constants.birtPath +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 );
		  
		if(null!=paraMap&&!paraMap.isEmpty()){
			Set<String> set = paraMap.keySet();
			for (String string : set) {
				if("reslut".equals(string)){
					Contact[] c =(Contact[]) paraMap.get(string);
					task.addScriptableJavaObject("reslut", c);
				}if("urlPath".equals(string)){
					task.addScriptableJavaObject(string, paraMap.get("urlPath")); 
				}else{
					//List<Contact> list = (ArrayList<Contact>)paraMap.get(string);
                     List list =(ArrayList) paraMap.get(string);
					task.addScriptableJavaObject(string, list);
				}
			}
		}
		
		//Set rendering options - such as file or stream output, 
		  //output format, whether it is embeddable, etc
		HTMLRenderOption options = new HTMLRenderOption();
		Date dateNow=new Date();
		String reqTime = CommonFunc.ConvertDateToStr(new Date(), Constants.YYYYMM);
		String dateNowStr= reqTime +"/"+outFlie;
		String birtFile = realPath+ Constants.birtPath+dateNowStr;
		options.setOutputFileName(birtFile);
		options.setOutputFormat(outType);
		task.setRenderOption(options);
		
		//run the report and destroy the engine
		try{
			task.run();
			engine.destroy();
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		return dateNowStr;
 }
 public static void main(String[] args) throws Exception {
 	Map<String, Object> reslutMap = new HashMap<String, Object>();
 	ExecuteReport pf = new ExecuteReport();
 	pf.executeReport(reslutMap,"scripted.rptdesign","scripted.xls","xls");
}
} 


Reporttest类
package com.jshx;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.jshx.util.CommonFunc;
import com.jshx.util.Constants;

public class Reporttest {
	public static void main(String args[]) {
		try {
			ContactListFactory cf = new ContactListFactory();
			Contact[] reslut = cf.createContactList();
			List<Contact> reslutList = cf.createList();
			Map<String, Object> reslutMap = new HashMap<String, Object>();
			reslutMap.put("reslut", reslut);
			reslutMap.put("reslutList", reslutList);
			String reqTime = CommonFunc.ConvertDateToStr(new Date(),Constants.YYYYMMDDHHMMSS);
			String birtType = "html";
			String birtFileName = "kenScripDataset_" + reqTime + "." + birtType;
			ExecuteReport mreport = new ExecuteReport();
			mreport.executeReport(reslutMap, "kenScripDataset.rptdesign",birtFileName, birtType);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

分享到:
评论

相关推荐

    SuperMap Objects Java数据集导出为Excel表文件

    本主题主要关注如何使用SuperMap Objects Java将数据集导出为Excel表文件,这对于数据分析、报告制作以及数据共享具有重要意义。 首先,我们要理解“数据集”在GIS中的概念。数据集是GIS中的基本数据单元,通常包含...

    SuperMap Objects Java 简单数据集生成复合数据集

    本篇文章将深入探讨如何使用SuperMap Objects Java将简单数据集转换为复合数据集,并最终导出为CAD(计算机辅助设计)格式。 首先,我们要理解“简单数据集”和“复合数据集”的概念。简单数据集通常指的是包含单一...

    SuperMap Objects Java 属性数据转点数据集

    本示例主要关注的是如何使用SuperMap Objects Java库进行属性数据到点数据集的转换。SuperMap Objects是SuperMap公司提供的一套功能强大的GIS开发组件,支持多种编程语言,包括Java,它能够帮助开发者构建地理空间...

    yolov5 鸟类检测 bird鸟类检测数据集.rar

    在“鸟类检测 bird鸟类检测数据集.rar”中,我们有一个专门针对鸟类检测的数据集。这个数据集基于PASCAL VOCtrainval2012数据集提取,PASCAL VOC是一个广泛使用的计算机视觉基准,包含了多种类别的物体实例分割和...

    数据集VOC鸟类野鸟飞鸟检测数据集VOC格式-17000张

    数据集格式:Pascal VOC格式(不包含分割的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):17000 标注数量(xml文件个数):17000 标注类别数:1 总文件大小:约4GB,分2个压缩包 标注类别名称:["bird"]...

    FlappyBird源码-java

    虽然Flappy Bird的源码可能不包含复杂的进度保存功能,但简单的高分记录可以通过序列化和反序列化技术实现,如使用java.io.Serializable接口。 通过学习Flappy Bird的Java源码,开发者不仅可以掌握基础的游戏开发...

    YOLO目标检测+鸟类数据集已标注可以直接使用(数据集+对应已标注文件).rar

    1、资源描述:YOLO目标检测+鸟类数据集已标注可以直接使用(数据集+对应已标注文件).rar 2、资源内容:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3、适用对象:计算机,电子信息工程、数学等专业...

    java实现Flappy Bird小游戏

    Java实现的Flappy Bird小游戏是一个非常适合初学者上手的项目,它可以帮助你深入理解Java编程语言,特别是游戏开发的基本概念。下面将详细讲解这个项目涉及的知识点。 首先,Flappy Bird是一款基于2D图形的游戏,...

    java调用soap接口案例

    通过以上知识点的学习和实践,你可以掌握如何使用Java调用SOAP接口,以及如何根据具体需求进行定制。在处理天气信息这样的案例中,理解SOAP协议和相关API的使用,将使你能够轻松地与各种Web服务进行交互。

    无人机和鸟分类数据集,各有165张图片

    标题中的“无人机和鸟分类数据集,各有165张图片”表明这是一个图像识别与分类的任务,涉及到两个类别:无人机(drone)和鸟(bird)。这个数据集包含330张图片,每种类别各占一半,可以用于训练或评估计算机视觉...

    java调用chrome浏览器内核cef实现,非jxbrowser

    Java调用Chrome浏览器内核是开发桌面应用时一个常见的需求,尤其在需要嵌入Web页面或者与Web内容交互的场景下。CEF(Chromium Embedded Framework)是一个开源项目,它允许开发者将Google Chrome的Blink渲染引擎和V8...

    SuperMap iObjects Java 7C网络数据集加密

    本文将深入探讨如何使用SuperMap iObjects Java 7C的API实现网络数据集的加密,以及这一过程中的关键知识点。 **1. SuperMap iObjects Java 7C 简介** SuperMap iObjects Java 是一套基于Java语言的GIS核心组件库,...

    JAVA调用C#写的DLL例子

    在本篇文章中,我们将详细介绍如何使用 JAVA 调用 C# 编写的 DLL 文件。首先,我们需要了解什么是 DLL 文件,以及它在编程中的应用。 DLL 文件是一种动态链接库文件,它可以被多个程序同时使用,减少了代码的重复...

    JAVA调用DLL方法 JAVA调用DLL方

    ### JAVA调用DLL方法 在跨平台开发领域中,Java作为一种强大的编程语言,因其具有良好的移植性和跨平台性而被广泛使用。然而,在某些特定情况下,我们可能需要调用本地库(例如DLL文件)来实现特定功能或提高性能。...

    GMSSL的java调用(JNI库和调用实例).zip

    使用JNI,Java程序可以调用GMSSL库进行SM3哈希计算,适用于数据完整性校验和数字签名的摘要生成。 3. **SM4算法**:SM4是一种对称分组密码算法,用于块加密。它具有128位的密钥和块大小,与AES相似。通过JNI,我们...

    java调用modem执行at指令

    当我们谈论“Java调用Modem执行AT指令”时,实际上是在讨论如何通过Java程序控制Modem来发送和接收特定的控制命令。AT指令集是Modem的基本通讯协议,由一系列简短的ASCII字符串组成,用于配置Modem的参数或指示其...

    java调用usb并口打印机.zip

    Java Print Service API支持本地打印,通过`DocFlavor`和`PrintRequestAttributeSet`对象定义打印数据格式和打印属性,然后调用`PrintJob.print()`方法发送打印作业。 在实际开发过程中,你可能需要做以下步骤: 1...

    Java调用Bartender Demo.rar

    Bartender提供了.net的开发sdk,但是没有提供java的,使得java开发者调用Bartender实现模板打印比较困难。本示例是结合Bartender官方资料,利用java通过COM组件方式实现可传递参数的模板打印。

Global site tag (gtag.js) - Google Analytics