报表知识库
我要提问

动态修改报表背景图的绝对路径

在制作报表中,背景图的用途很广泛,可以用于套打时的底图描绘,也可以用于背景水印等等。润乾报表提供了两种方式为报表设置背景图,包括自定义类方式和URL方式。当用户在报表中使用的背景图是自己写的一个Java类画的图时,可使用自定义类方式;当用户在报表中使用的背景图是一个图片文件时,可使用URL方式。其中URL方式中的URL可以是绝对路径名,也可以是相对路径名。当URL是绝对路径名时,润乾报表还提供了使用api代码动态修改报表背景图的绝对路径的方法,下面将通过一个小例子简单介绍一下该方法。

首先,创建一个内建数据集,建立一个员工基本信息表,设置背景图片属性,如下

设置背景图_.png

报表设计效果如下

runqian.PNG

报表发布后的效果如下

runqian_1.png

然后,写一个java类Application,在该类中使用如下方法实现动态修改绝对路径,代码如下

public static void run() throws Exception {

String reportFile = “D:\\test\\test.raq”; // 报表文件
String lisenseFile = “E://110//workspace//helloworld//WebRoot//WEB-INF//classes//Server2009-07-31V4.0Windows.lic”;//授权文件

// 第一步,读取报表模板并设置授权文件
ReportDefine rd = (ReportDefine) ReportUtils.read( reportFile );
ExtCellSet.setLicenseFileName(lisenseFile);

// 第二步,修改背景图
BackGraphConfig bgc=rd.getBackGraphConfig();
String picUrl1=bgc.getURLOrClassName();
Byte type=bgc.getType();
System.out.println(”====背景图的当前路径为:”+picUrl1);
if(type==0) //报表背景图的配置类型分为url路径和自定义类,当返回值为0时表示配置类型为url路径
{
String picUrl2=”D:\\test\\1.JPG”;
bgc.setURLOrClassName(picUrl2);
rd.setBackGraphConfig(bgc);
}
String picUrl3=bgc.getURLOrClassName();
System.out.println(”背景图修改后路径为:”+picUrl3);
ReportUtils.write(reportFile, rd);//报表回存
Context context = new Context();
Engine enging = new Engine(rd, context);
IReport iReport = enging.calc();

// 第三步,通过JFrame 查看报表效果
CSReport csReport = new CSReport(iReport);
JFrame jf = new JFrame(”润乾报表”);
try {
jf.getContentPane().add(csReport.getDisplayPane());
} catch (Throwable e) {
e.printStackTrace();
}
jf.setSize(600, 400);
jf.setLocation(200, 100);

}

在Application类中写个主函数调用一下该方法,如下

public static void main(String[] args){
try {
Application.run();
} catch (Exception e) {
e.printStackTrace();
}
}

运行程序后就可以看到动态修改报表背景图的绝对路径后的效果。

查看发布后的报表,效果如下

2runqian_2.png

这样就实现了动态修改报表背景图的绝对路径,从而动态修改了报表的背景图片。