知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > xml文件作数据集并且文件名需要动态指定

xml文件作数据集并且文件名需要动态指定

问题描述

客户想用xml文件作数据集,并且xml文件是程序自动生成的,每天根据日期生成xml文件,因此客户想动态改变报表数据集引用的xml文件名

问题解答

复杂报表设计" target="_blank" class="quieeLink1">设计器中具体测试了一下.,目前xml文件作数据集支持到绝对路径或者相对路径上指定的xml文件,试着用宏试着将xml文件名传过去但是程序不认,这样客户想动态传数据集xml文件名就行不通了.
所以只能在api中接收xml文件名然后添加到数据集中进行实现,代码如下:
String name=request.getParameter(”name”);
String newXmlFileName = ”D:\\2222.xml”;//动态添加的xml文家名
InputStream fis=application.getResourceAsStream(”/reportFiles/”+name);
ReportDefine rd = (ReportDefine)ReportUtils.read( fis );

DataSetMetaData dsmd = rd.getDataSetMetaData();
for(int i=0;i<dsmd.getDataSetConfigCount();i++){
// 获取一个数据集
DataSetConfig dsc = dsmd.getDataSetConfig(i);
// 不是XML数据集则跳过
if(!(dsc instanceof XMLDataSetConfig)) continue;
// 获取XML数据集的文件名
XMLDataSetConfig xmldsc = (XMLDataSetConfig)dsc;
String xmlFileName = xmldsc.getFileName();
System.out.println(”XML文件名:”+xmlFileName);
xmldsc.setFileName(newXmlFileName);
// 保存修改
dsmd.setDataSetConfig(i, xmldsc);
}
rd.setDataSetMetaData(dsmd);

最后用defineBean发布报表

String beanName=”testBean”+name;
out.println(beanName);
//设置request中报表定义对象
request.setAttribute(beanName,rd);

本文标签:
发布日期:2008/12/08
本文分类: 设计基础