interboy
作者interboy·2011-05-10 21:14
软件开发工程师·北京中电普华信息技术有限公司

如何通过底层配置一劳永逸的新增报表模板

字数 1771阅读 4288评论 27赞 20
定义一个模板,会为报表开发节省很多空间,可以在模板中包含一些通用的页眉页脚,样式JavaScript脚本等。
在ReportStudio中可以将报表转换为报表模板,并保存在cognos connection中,但这样有可能会有人误操作把报表模板改动,而为其他人的引用带来不必要的麻烦。
其实我们可以通过修改Cognos的文件使其在新建报表时引用模板,而不必打开模版文件。效果如下图所示,在模板中多了一个“冯东测试”

我们先要获取报表模板的XML定义,我们可以将现有报表转换为模板,也可以直接创建一个报表模板。
假定我需要创建一个包含饼图、柱状图和一个交叉表的报表模板,为了保持联动,这三个对象共用一个查询。
新建一个报表模板,创建一个table进行布局,拖入2个图标一个交叉表,并设置共用一个查询,效果如下图所示

当然,可以在页眉或者页脚处增加一些JS脚本和CSS样式。
模板设计完成后,在ReportStudio菜单栏 点击  工具-->复制报表到剪切板
打开UE,新建一个空白页,将模板的xml定义粘贴进去。
删除xmlns和template的定义删除,大致的格式如下:
<report expressionLocale="zh-cn">
    <modelPath/>
    <layouts>
    ……省略具体内容
    </layouts>
    <classStyles>
    ……省略具体内容
    </classStyles>
</report>
上面标红的modelPath是需要注意的,新创建的模板定义中不含这行,是我单独加的,如果不加这行, 模板打开后,左侧的package为空,需要重新选择package。加了这行,你在哪个package调用的ReportStudio,默认就打开哪个package。
前面说了半天是模板的内容,内容有了,我们下面来说一下把这个内容放到哪。
我这里以CGI方式为例,如果是Servlet方式,请修改p2pd文件夹下相应路径的文件。
1、打开C8_locationwebcontentpatres templates.xml
在name="Blank"的template节点后增加一个新的template节点
<template name="FdTest">
….模板的XML定义
</ template>
保存为UTF-8格式(这非常重要,如果不是UTF8格式,模板里面的中文会解析报错)
2、打开C8_locationwebcontentpatresResources.xml
找到id="New"的listView 节点,在listItems节点下增加一条记录
<listItem idsLabel="IDS_LBL_FD_TEST" icon="icon_blank.gif" templateName="FdTest"/>
其中templateName设置应和templates文件中新增的模板名称一致
idsLabel 是新建页面中模板的名称,需要在reportstudio_en.xml和reportstudio_zh-cn.xml中设置
3、打开C8_locationwebcontentpatresreportstudio_zh-cn.xml
找到<string id="IDS_LBL_NEW_BLANK_REPORT" type="Control Label">空白</string>(约1666行处),在它下面增加一行
<string id="IDS_LBL_FD_TEST" type="Control Label">测试模板</string>
如果不配置这一行,在新建报表时会报下面的错误

注意也需要修改reportstudio_en.xml
保存修改后的文件,重新进入ReportStudio。就会多了一个刚才创建的模板。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

20

添加新评论27 条评论

jjylysjjylys软件开发工程师xc
2015-04-24 10:39
对 “冯东测试” 模板的引用是 引用的副本还是模板本身呢? 如果修改冯东测试,是否引用它的每个报表会自动发生变化呢?
elvalinelvalin研发工程师18M
2014-01-07 20:01
又长了见识,太厉害了
remotejavaskyremotejavasky软件开发工程师杭州医惠科技
2013-04-14 13:10
cognos sdk自带了个修改报表xml的方法  是否可以通过sdk来批量修改呢  如果有时间写一个工具试一试
Sunny_WangSunny_Wang软件开发工程师Accenture
2012-12-05 09:39
zhizhuo8893: 我还没试...
(︶︿︶)鄙视你
zhizhuo8893zhizhuo8893技术经理IBM
2012-11-28 16:23
Sunny_Wang: 我没试成功
我还没试...
kaylee0524kaylee0524软件开发工程师零售行业公司
2012-10-18 11:40
太强大了吧~~~~
Sunny_WangSunny_Wang软件开发工程师Accenture
2012-08-23 09:32
zhizhuo8893: 插不上话啊...太厉害了! 分享!撤!
我没试成功
hikeplayguitarhikeplayguitar研发工程师山东城市商业银行联盟
2012-04-26 15:53
学习了。。

2012-02-23 10:16
厉害
zhizhuo8893zhizhuo8893技术经理IBM
2012-02-09 17:06
插不上话啊...太厉害了! 分享!撤!
xiaoshuaipingxiaoshuaiping系统架构师DONGRUAN
2011-09-06 22:48
分享了

2011-08-24 20:13
还是分享了

2011-08-21 11:01
何时我才能像你们这样,。。。

2011-08-21 11:01
真高手啊,太强悍了
gadfly80gadfly80it技术咨询顾问SAS China
2011-07-12 17:32
很好很强大,学习了

2011-05-23 16:46
强大的无比~~~
FIR1987FIR1987软件开发工程师ibm
2011-05-13 10:58
的确是 不过我的也是8.3 多谢了~
interboyinterboy软件开发工程师北京中电普华信息技术有限公司
2011-05-13 09:58
FIR1987: 你的文件没改 直接copy的 呵呵
那你就得在xml文件里report中增加expressionLocale=“en-us”,8.3没有这么严格的判断
FIR1987FIR1987软件开发工程师ibm
2011-05-12 21:38
你的文件没改 直接copy的 呵呵
FIR1987FIR1987软件开发工程师ibm
2011-05-12 21:35
XML Error
好~~汇报问题 你的这三个文件我放在我的目录下 是这个错误 三台机子都试了 都是8.3版本的 呵呵 上次回复的时候我的版本是8.4 所以点了没反应


错误如下


Reason:
缺少所需的属性 'expressionLocale'。

URL:


Line:
3825

Character:
9

Source:

<report>
--------^
interboyinterboy软件开发工程师北京中电普华信息技术有限公司
2011-05-12 08:55
macherater: 冯老大,问下,,你的fdtest.xml文件,就是你上面那个在空白UE里生成的那段代码所保存而成的文件吗??没明白那个文件的出处/
fdtest.xml?我这里没有这个文件啊?我觉得你应该说的是报表模板的xml定义吧,我在里面描述了“、
我们先要获取报表模板的XML定义,我们可以将现有报表转换为模板,也可以直接创建一个报表模板。
假定我需要创建一个包含饼图、柱状图和一个交叉表的报表模板,为了保持联动,这三个对象共用一个查询。
新建一个报表模板,创建一个table进行布局,拖入2个图标一个交叉表,并设置共用一个查询,效果如下图所示”
报表模板的定义是用RS做的,上面提了有两种方式,然后把报表定义(XML)拷贝到ue里进行处理
interboyinterboy软件开发工程师北京中电普华信息技术有限公司
2011-05-12 08:51
FIR1987: 我的之后出现了一个问题就是模板有,但是点击或双击那个新出的模板都无反应 也没有报alert任何错误 版本是8.3 加最新补丁 不知道你是什么版本 会不会有影响呢?
我的版本就是8.3,sp3我记不清打没打了,我看cmplst.txt里server的版本号是8.3.81.20-0
macheratermacherater软件开发工程师塔塔信息技术中国公司
2011-05-12 01:16
冯老大,问下,,你的fdtest.xml文件,就是你上面那个在空白UE里生成的那段代码所保存而成的文件吗??没明白那个文件的出处/
FIR1987FIR1987软件开发工程师ibm
2011-05-11 23:19
我的之后出现了一个问题就是模板有,但是点击或双击那个新出的模板都无反应 也没有报alert任何错误 版本是8.3 加最新补丁 不知道你是什么版本 会不会有影响呢?
小牛小牛商业智能工程师自由职业
2011-05-11 11:16
学习了,不错
interboyinterboy软件开发工程师北京中电普华信息技术有限公司
2011-05-11 08:53
贝克汉姆: 研究得真深入,佩服。
正好请教您个问题:很多人提高过想一劳永逸批量修改报表,不知道可否分享,thank you!
这是FIR1987问的,批量修改现有报表,目前我能想到的是通过修改contentstore,风险比较大
贝克汉姆贝克汉姆软件开发工程师IBM
2011-05-10 22:28
研究得真深入,佩服。
正好请教您个问题:很多人提高过想一劳永逸批量修改报表,不知道可否分享,thank you!
Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广