cognos报表导出excel_Cognos制作报表常见问题

1. 固定报表制作步骤

1.1. 建模

1).建立物理视图

存储过程传递参数的问题:

右键视图——Edit Definition,在弹出窗口中将Value设置为:#prompt('ORG_CODE')#

按此方法设置后,打开报表URL时将提示输入参数,参数名称即为ORG_CODE。

2)建立业务视图

3)模型包发布

1.2. 制作报表

Web设计登陆URL:

http://10.70.248.91/ibmcognos/cgi-bin/cognos.cgi?b_action=xts.run&m=portal/main.xts

名称空间:BFAuth

登录后启动Report Studio制作相关报表。

2. 固定报表的布局

布局控制使用“块”和“表格”,“块”用于分行,“表格”可以用于分列。

3. 插入图形

“图表”插入时可以选择相应的图形,图表可以直接转换类型,在图表上点击右键转换图表。

4. 隐藏图形右侧图标注解

5. 图形上显示数值

6. 添加下拉框,并绑定参数

1).在工具箱中选择该项,拖到报表相应位置。

2).在弹出的对话框中按如下设置:

3).绑定相应查询及使用值,设置排序方式。

4).设置自动提交。

7. JS实现Cognos报表隐藏工具栏、导出不同格式报表、打印

1).在page页面中加入4个HTLM 项目分别用来实现隐藏工具栏、打印、Excel2002导出、选择导出格式。如下:

2).修改4个HTML属性-》常规-》说明内容分别为:隐藏工具栏、打印、Excel2002导出、选择导出格式。

3).修改完毕。如下所示:

4).隐藏工具栏对应的JS代码:

.mainViewerHeader3{ display: none;}

5).打印Html对应的JS代码:(打印报表)

6).Excel2002导出Html对应的JS代码:(Excel2002格式导出报表)

7).选择导出Html对应的JS代码:(下拉框导出不同格式报表)

New Document

function Export_js(){

var s;

var se =document.getElementById("zbsjlx");

var options=se.getElementsByTagName("option");

for(var i=0;i

if(options[i].selected){

s = options[i].value;

}

}

var str=s;

if(str=='Excel2007'){

eval(gCognosViewer.getRV().viewReport('spreadsheetML'));

}

else if(str=='Excel2003'){

eval(gCognosViewer.getRV().viewReport('XLWA'));

}

else if(str=='Excel2002'){

eval(gCognosViewer.getRV().viewReport('XLWA'));

}

else if(str=='Singlesheet'){

eval(gCognosViewer.getRV().viewReport('singleXLS'));

}

else if(str=='Excel2000'){//Excel2000有可能不支持

eval(gCognosViewer.getRV().viewReport('XLS'));

}

else if(str=='PDF'){

eval(gCognosViewer.getRV().viewReport('PDF'));

}

else{

alert('请选择导出格式!');

}

}

Excel2007

Excel2003

Excel2002

Singlesheet

Excel2000

PDF

8).界面实现效果:

9).补充说明:如果从页面上点击链接直接到报表的话,还可以给那一大串链接后面加上【&cv.header=false&cv.toolbar=false】这句话,可以隐藏掉报表最上面那个一指宽的边框。

8. 导出为PDF格式后因分页导致的内容重复问题

文件-PDF页面设置-纸张大小,选择A3。

9. URL调用Cognos报表的方法

1).复制出报表对应的URL

复制出来

http://10.70.49.3:80/ibmcognos/cgi-bin/cognos.cgi?b_action=cognosViewer&ui.action=run&ui.object=%2fcontent%2ffolder%5b%40name%3d%27HR-BI%27%5d%2fpackage%5b%40name%3d%27HR-BI%e7%ae%a1%e7%90%86%e6%8a%a5%e8%a1%a8%27%5d%2freport%5b%40name%3d%27%e7%ae%a1%e7%90%86%e6%8a%a5%e8%a1%a8%e6%a6%82%e8%a7%88%27%5d&ui.name=%e7%ae%a1%e7%90%86%e6%8a%a5%e8%a1%a8%e6%a6%82%e8%a7%88&run.outputFormat=&run.prompt=true

这是报表原始的URL。

2).修改URL

将run.prompt=true改成false再加&p_MONTH=201501

即:

http://10.70.49.3:80/ibmcognos/cgi-bin/cognos.cgi?b_action=cognosViewer&ui.action=run&ui.object=%2fcontent%2ffolder%5b%40name%3d%27HR-BI%27%5d%2fpackage%5b%40name%3d%27HR-BI%e7%ae%a1%e7%90%86%e6%8a%a5%e8%a1%a8%27%5d%2freport%5b%40name%3d%27%e7%ae%a1%e7%90%86%e6%8a%a5%e8%a1%a8%e6%a6%82%e8%a7%88%27%5d&ui.name=%e7%ae%a1%e7%90%86%e6%8a%a5%e8%a1%a8%e6%a6%82%e8%a7%88&run.outputFormat=&run.prompt=false&p_MONTH=201501

注意:参数名称前面要加上p_

10. JSP页面中设置Cognos报表自动登录

1).在Cognos中新建一张空白报表,添加HTML项目,在属性中将“源类型”设置为“报表表达式”。在表达式定义中写一条JS语句,跳转到系统的真实首页。

'window.location.href="'+ ParamDisplayValue('iplatip')+"DispatchAction.do?efFormEname=HF0101"+'"'

2).查看空白报表的搜索路径,记下该路径,用它替换index.jsp页面中的/content/folder[@name='HR-BI']/package[@name='HR-BI管理报表']/report[@name='PageJumpHRBI']部分。

3).在项目中新建index.jsp页面,在index.jsp页面中设置Cognos报表的登录信息,实现自动登录到步骤1)所创建的空白报表。

4).登录系统时先跳转到index.jsp页面,然后自动登录到Cognos的空白报表,再跳转到系统的真实首页。

参考代码:

dispatchAddr.jsp

String dispatchAddr = "http://10.70.49.3:80/ibmcognos/cgi-bin/cognos.cgi";

%>

index.jsp

import="com.baosight.iplat4j.ec.tm.utils.TemplateInitInfo,com.baosight.iplat4j.util.DateUtils,com.baosight.iplat4j.ec.tm.utils.TemplateInitInfo.*"%>

request.getSession().setMaxInactiveInterval( 2*60*60 );

if (TemplateInitInfo.getContextPath() == null) {

TemplateInitInfo.setContextPath(request.getContextPath());//存上下文

TemplateInitInfo.setIp(request.getServerName());//存ip

TemplateInitInfo.setPort(request.getServerPort());//存port

}

//获取用户名、密码

IUserManager um = SecurityFactory.getInstance().getUserManager();

String username = (String) request.getSession().getAttribute("loginname");

User user = um.getUser(username);

String codepassword = user.getCodedPassword();

//获取IP及端口号

StringBuffer url = request.getRequestURL();

String ip = url.delete(url.length() - request.getRequestURI().length(), url.length()).append("/").toString();

int port=request.getLocalPort();

%>

document.forms[0].submit();

11.常见报错1).RQP-DEF-0177 执行操作“sqlPrepareWithOptions”(状态为“-120”)时出错

错误明细:UDA-SQL-0458 PREPARE 失败,因为此查询要求在本地处理数据。尚未启用允许本地处理的选项。UDA-SQL-0580 数据库不支持调用语句作为派生表,并且该用法需要在本地处理数据。

解决方法:选择对应的查询,在“属性”中将“处理”设置为“仅限本地”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值