使用iReport和Jasperreport开发报表
使用iReport和Jasperreport开发报表
iReport是报表设计器,它负责设计报表模板,并生成*.jrxml,可以编译生成*.jasper模板文件;Jasperreport是报表产生库,它通过传入模板生成pdf或html格式的报表。
1,下载iReport和Jasperreport,要生成pdf必须要下载itext-2.0.1.jar和中文支持包iTextAsian.jar。我下载的版本是iReport-2.0.0.zip和jasperreports-1.3.4.jar。
2,配置数据库连接,加入合适的数据库JDBC驱动到iReport-2.0.0/lib,在iReport-2.0.0的菜单的Data->连接,数据源->点击New。
3,新建报表,可在i18n标签里选择xml的编码UTF-8或自己填写GBK,向报表设计面板里添加必要的对象。并使当前的报表和之前建立的数据库连接关联,在菜单建立->使用动态连接里选择。为了使产生pdf支持中文,导入iTextAsian.jar包,在iReport报表设计器里将field PDF font name 已经设置成STSong-Light,PDF Embedded PDF Encoding里面选择UniGB-UCS2-H (Chinese Simplified)
4,设计报表:
报表查询,在菜单Data->报表查询里编写合适的SQL,例如:select * from sys_module where level2=$P{level2} order by level2,在菜单预览->报表字段拖放字段到合适的位置。
设置分组展示,在菜单里预览->报表群组里new一个分组,在Group expression里输入要分组的字段,如$F{user_name},user_name为字段名,其实类似于group by user_name。
添加参数,参数是需要外界提供参数给报表的入口,比如SQL语句的where条件的表达式。通过菜单预览->报表参数开启报表参数列表对话框。例如:前面的sql里的$P{level2}可由程序传递过来,代码见后面的程序。定义Parameter Name为level2,Default Value Expression为"1"
添加变量,变量可以定义一些java语言表达式,也可以对某个字段做一些sum,count,average等计算,例如:定义Variable Name为level, Variable Expression为new Integer($F{LEVEL2}.intValue()),选择Calculation Type为Sum,即对LEVEL2字段做Sum合计,然后把$V{level}拖放在合适的位置
5,使用JasperReports报表引擎,编码产生pdf格式报表
/**
* @param args
*/
public static void main(String[] args) {String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String sConnStr = "jdbc:oracle:thin:@localhost:1521:psmis";
Connection conn = null;
try
{
Class.forName(sDBDriver);
conn = DriverManager.getConnection(sConnStr,"userName","password");
}catch(Exception e){
e.printStackTrace();
}try
{
File business_rpt = new File("E:/ireport/psmis.jasper");
Map parameters = new HashMap();
parameters.put("level2", "2");
JasperRunManager.runReportToPdfFile(business_rpt.getPath(),parameters,conn);
}catch (JRException e)
{
e.printStackTrace();}
try{
if(conn!=null)conn.close();
}catch(Exception e){
e.printStackTrace();
}
}