注:本文转自 http://blog.csdn.net/xujiaqiang/archive/2008/01/19/2052789.aspx
感谢作者分享。
Birt报表设计步骤:
1、下载birt all in one 2.2.1.1,包含eclipse,解开下载文件
启动eclipse,必须使用JDK1.5启动eclipse,否则新建工程对话框中没有birt的相关选项
2、新建report project和report
打开data explorer视图,新建一个data sources,定义数据库连接driver/url/用户名/密码,在"Manage Drivers..."中把jdbc的jar加进来
3、新建Report Parameter,设置参数名称、类型,参数值将来通过url传递或使用程序方式赋值
4、新建data sets,设置Query,即preparedStatement语句,设置data set的Pameters,即reparedStatement中的“?”,使之和report parameter关联; 如果data set的Parameter的值不是来自于Report Parameter,例如来自另外一个data set, 可不设置关联,而在报表内容中设置和其它data set字段的关联(见步骤8)
5、如果data set对应的sql是动态生成的,可以设置“property Binding”,在Query Text中输入sql和表达式,其中可以使用Report Parameter和javascript语句,运行时将执行Property Binding中的Query Text,而不执行Query中的preparedStatement,但是Query中的preparedStatement在设计报表时还是有用的,因为可以看到运行结果的字段列表,只要preparedStatement和Query Text返回相同的字段即可
6、将定义好的data set拖动到设计界面上,会自动在报表放置一个Table
7、如要对table的某列合计,从Palette视图中拖一个“Aggregation”到设计界面
8、如要Master-Sleve报表,则在Table中再放置一个Table。例如一个data set是客户基本信息,每个客户一条记录,另一个data set是客户交易明细,每个客户可能有多条记录,则先将客户基本信息的data set拖置设计界面,会自动放置一个Table,然后将客户交易明细的data set拖置前一个Table中适当位置,即生成一个Table中的Table。选中交易明细的Table,打开Property Editor视图,在binding栏中,选择交易明细的data set,按“Dataset Parameter Binding...”,选择“CUST_ID"字段,将其和客户基本信息data set的CUST_ID关联起来(row["CUST_ID"])
9、按需要调整报表的样式,从eclipse工具栏中选择“view report in web viewer”,如果设置了Report Parameter,会出现一个对话框,要求输入Report Parameter的值,按确定后生成报表内容
10、在web viewer中,鼠标右建点按生成的报表,选“属性”,获取url,开一个空白IE,复制url到地址栏,在url最后用“&参数名=参数值”方式,把Report Parameter加进url,按回车,直接出现报表结果,不再出现报表参数输入对话框。还可以pdf/doc/html等格式预览生成的报表
Birt报表部署步骤:
部署设计好的报表很简单,只需要下载Birt runtime,将Birt runtime部署为一个web应用,报表设计文件复制到该应用的根目录即可。为方便起见,以下将Birt runtime部属为一个独立的应用,当然也可以将Birt runtime整合到你的web应用中
1、下载birt runtime 2.2.1.1,解开下载文件
2、将birt rumtime解开后的目录下的部署为一个web应用,使用JDK1.4.2或以上版本
3、将报表设计步骤中生成的设计文件(*.retdesing文件)复制到web应用所在目录
4、确保以下文件在WEB-INF/lib目录下存在,如果没有,从all in one中搜索复制过来
com.ibm.icu_3.6.1.v20070906.jar
coreapi.jar
engineapi.jar
scriptapi.jar
5、将jdbc的jar或zip文件复制到WEB-INF\platform\plugins\org.eclipse.birt.report.data.oda.jdbc_2.2.1.r22x_v20070919\drivers目录下
6、删除WEB-INF\platform\org.eclipse.birt.report.data.oda.sampledb_2.2.1.r22x_v20070919目录(示例数据库,没什么用处),否则生成报表时有不必要的警告信息出现
7、启动web server,修改设计步骤第10步获得的url,使IP/端口/web应用名称符合你的Birt runtime部署,在IE中可以查看报表内容
使用Birt提供API以程序方式生成报表结果,例如生成PDF格式的报表结果,代码片段如下:
import java.util.HashMap;
import java.util.logging.Level;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.ByteArrayOutputStream;
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.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.PDFRenderOption;
public class PDFReportServiceAccess
{
/** *//** 初始化的状态 */
protected static boolean initStatus = false;
private static IReportEngine engine = null;
private static EngineConfig config = null;
private static IReportRunnable design = null;
private static PDFRenderOption ro = null;
/** *//** 初始化资源 */
public void initilize()
{
if ( initStatus == true )
return;
try
{
config = new EngineConfig();
config.setEngineHome( "C:/projects/birt/WEB-INF/platform" ); //birt runtime web应用中的报表引擎目录
config.setLogConfig( "C:/projects/birt/logs", Level.FINE );
Platform.startup( config );
IReportEngineFactory factory = ( IReportEngineFactory ) Platform
.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
engine = factory.createReportEngine( config );
engine.changeLogLevel( Level.WARNING );
ro = new PDFRenderOption();
// ro.setBaseURL( "http://localhost:8080/birt" ); //birt runtime web应用
config.getEmitterConfigs().put( "pdf", ro ); //生成pdf格式
initStatus = true;
}
catch ( Exception ex )
{
ex.printStackTrace();
initStatus = false;
}
}
/** *//** 释放资源 */
public void release()
{
engine.shutdown();
Platform.shutdown();
initStatus = false;
}
protected OutputStream run( String filename, HashMap parameters ) throws EngineException
{
design = engine.openReportDesign( filename );
// Create task to run and render the report,
IRunAndRenderTask task = engine.createRunAndRenderTask( design );
HashMap contextMap = new HashMap();
contextMap.put( EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT, ro );
task.setAppContext( contextMap );
task.setParameterValues( parameters );
task.validateParameters();
OutputStream os = new ByteArrayOutputStream();
ro.setOutputStream( os );
ro.setOutputFormat( "pdf" );
task.setRenderOption( ro );
task.run();
task.close();
return os;
}
/** *//**
* 生成PDF格式报表,以OutputStream格式返回
*
* @param filename 报表设计文件名全路径
* @param parameters
* 报表参数
* @return ByteArrayOutputStream
* @throws EngineException
*/
public OutputStream call( String filename, HashMap parameters ) throws EngineException
{
initilize();
OutputStream os = run( filename, parameters );
release();
return os;
}
/** *//**
* @param args
*/
public static void main( String[] args )
{
HashMap parameters = new HashMap();
//三个Report Parameters,名称必须在报表设计文件中预先定义好
parameters.put( "begindate", "2004/01/01" );
parameters.put( "enddate", "2007/12/31" );
parameters.put( "sql", " where cust_id = 1234567" );
ByteArrayOutputStream bos = null;
PDFReportServiceAccess ebr = new PDFReportServiceAccess();
String filename = "C:/projects/birt/batch_report.rptdesign";
try
{
bos = ( ByteArrayOutputStream ) ebr.call( filename, parameters );
OutputStream fis = new FileOutputStream( "c:/test.pdf" );
bos.writeTo( fis );
}
catch ( Exception e )
{
e.printStackTrace();
}
}
}
分享到:
相关推荐
自己写的java生成excel报表jar包,使用html中的table标签样式设计报表头部信息xml文件,接受list数据集生成excel报表。对结构不是太复杂的excel报表十分好用,有详细使用说明。不断完善中,欢迎提供意见和建议!(注...
flappybird源代码[归纳].pdf
This paper investigates acoustic modeling for recognition of bird species from audio field recordings. First, the acoustic scene is decomposed into isolated segments, corresponding to detected ...
自己写的java生成excel报表jar包,使用html中的table标签样式设计报表头部信息xml文件,接受list数据集生成excel报表。对结构不是太复杂的excel报表十分好用,有详细使用说明。最新添加了打印时间。
在FlappyBird的cocos2dx版本中,游戏场景、角色动画、碰撞检测等功能都通过cocos2dx的API实现。 2. 游戏对象:游戏中的Bird对象和管道(Pipes)对象是核心。Bird的移动和跳跃通过物理引擎模拟,而Pipes则动态生成,...
Flappy Bird java 源代码.pdf
在游戏开发中,我们还需要设计_pipe模块,用于生成随机的管道,玩家需要通过点击屏幕来控制小鸟飞过管道,获取游戏分数。游戏结束时,我们需要将游戏分数记录下来,并显示游戏结束信息。 本文通过结合HTML5中的...
【描述】:本文将详细介绍如何在Linux系统中安装Nginx,并探讨其主要功能,包括反向代理、负载均衡以及项目部署的具体操作。 【标签】:“Nginx”,“Nginx反向代理”,“Nginx负载均衡”,“Nginx项目部署” ...
在这个名为“OpenCv制作的FlappyBird”的项目中,开发者利用OpenCV技术实现了一个经典游戏FlappyBird的版本。下面我们将详细探讨OpenCV在该项目中的应用以及相关知识点。 首先,我们要理解OpenCV的基本概念。OpenCV...
在Ubuntu 12.10操作系统中,Thunderbird是一款非常受欢迎的开源邮件客户端,它提供了高效、安全且用户友好的邮件管理功能。Thunderbird由Mozilla基金会开发,与Firefox浏览器一样,都强调隐私保护和自由软件的价值。...
这个CHM文件包含了大量的技术信息,帮助开发者了解如何利用BIRT的API来创建、设计和运行报表。API(Application Programming Interface)是软件之间交互的接口,对于开发者来说,它是理解BIRT内部工作原理并进行定制...
在本文中,我们将深入探讨这款游戏中的一些关键素材,并通过提供的压缩包文件,了解游戏场景、障碍物以及用户界面的基本构成。 1. 游戏背景: - bg_day.png 和 bg_night.png:这两个文件代表了游戏的日间和夜间...
- 创建动态生成的管道障碍,确保游戏的随机性和挑战性。 - 设计得分系统和游戏结束条件。 - 对游戏进行调试和优化,确保流畅运行。 第二章 游戏功能分析 2.1 游戏主界面功能分析 主界面应包含开始按钮、游戏说明和...
本篇将深入探讨利用Unity进行游戏开发,以Flappy Bird为案例,同时延伸至"小鸟大战"这一中型游戏的制作过程。 Flappy Bird是一款曾经风靡全球的简单却又极具挑战性的手机游戏,其设计的核心在于玩家操控小鸟穿越...
在开发游戏时,图像处理和音频管理是至关重要的部分,特别是在创建类似Flappy Bird这样的简单但视觉和听觉效果丰富的游戏中。以下是从给定的文件中提取的关键知识点: 1. **图片导入与使用**: - `#include ...
- 管子的生成和移动是一个循环过程,我们可以在水平方向上设置一个边界,当管子到达边界时销毁并重新生成。 3. **碰撞检测与响应**: - Unity3D的碰撞检测系统可以帮助我们判断小鸟是否与管子发生碰撞。如果发生...
通过学习Flappy Bird的Java源码,开发者不仅可以掌握基础的游戏开发技能,还能了解如何利用Java实现游戏逻辑、图形渲染、用户交互等多个方面。这个过程对于提升Java编程能力和游戏设计思维具有极大的帮助。
**蓝色知更鸟API(Bluebird API)** 在JavaScript的世界里,Promise是处理异步操作的重要工具,而Bluebird库是Promise的一个强大实现。Bluebird以其高性能、丰富的API和全面的错误处理机制著称。本篇文章将深入探讨...
《Flappy Bird 图像音频资源解析》 在游戏开发领域,资源是构成游戏世界的基础,它们赋予游戏视觉和听觉的生动性。本资源包“flappybird图像音频资源包”便是针对经典游戏《Flappy Bird》而设计的,旨在为开发者...