api 修改单元格内容后没生效
下面是我的代码,set 后文件内容并没有修改,请问是什么原因呢
ReportDefine rd=(ReportDefine) ReportUtils.read(rpxFileName);// 读取报表文件
ParamMetaData pmd=rd.getParamMetaData();// 获取报表参数对象
if(pmd != null){
int pmcount=pmd.getParamCount();// 获取参数个数
for(int i=0;i<pmcount;i++) {
if (pmd.getParam(i).getValue()!= null && !pmd.getParam(i).getValue().isEmpty()){
Pattern pattern = Pattern.compile(“\b”+Pattern.quote(param1)+“\b”, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(pmd.getParam(i).getValue());
pmd.getParam(i).setValue(matcher.replaceAll(Matcher.quoteReplacement(param2)));
}
}
}
0 打赏
打赏 100 积分后可见

你这个是修改参数默认值的方法,没涉及到单元格。还有,即使是修改参数值,修改后要 rd.setParamMetaData 一下,然后可以将报表文件再存成 rpx,可以用设计器打开看看里边结果
先说下具体需求,要实现什么功能?
我们想批量替换参数,还有 sql 里的用户名,还有集算器里的用户名。我用 ReportUtils.write 可以保存润乾报表了,集算器改完之后怎么保存呢
替换是想运行时动态生效,还是就想改报表里的内容生成新的报表?
如果生成新的报表的话,可以通过 api 获取数据集内的 sql 语句:
这是获取 sql 代码
设置 sql 这样:
但是集算器的话应该还没有 api,其实如果是指想动态替换某部分的内容,直接用参数就行,比如定义个参数 arg1, 然后在 sql 里或者集算器里用 ${arg1} 这种方式就行,给这个参数传递不同值,报表运行时就会动态替换成对应内容
好的多谢,已经搞定了