惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
L
LangChain Blog
Y
Y Combinator Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
V
Visual Studio Blog
小众软件
小众软件
月光博客
月光博客
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
美团技术团队
量子位

博客园 - 冯东

Oracle问题诊断过程常用SQL Cognos10 RedHat5.4 X64 安装记录 不用JavaScript实现列表排序(利用钻取实现) 从命令行启动Cognos的方法 如何让列表实现任意字段类型的排序 基于Oracle触发器的报表版本保存工具 Cognos重建CSK JS屏蔽Cognos报表右键菜单 - 冯东 - 博客园 利用JS重写Cognos右键菜单 Cognos亲和力解释 Java中Split函数的问题 - 冯东 - 博客园 修改Oracle数据库的字符集 Oracle锁定选出的结果集 面试题 北漂,真的来了 通过修改Linux服务自动启动指定应用程序 Oracle自动启动(解决了Failed to auto-start Oracle Net Listene和Message 1053 not found错误) 由于系统时间修改导致Oracle启动失败 - 冯东 - 博客园 Oracle中删除包含物化视图的表空间的方法
如何使导出的excel和报表分页设置不一样
冯东 · 2010-10-28 · via 博客园 - 冯东

我们以列表为例,默认的行数是20,超过20行,列表就会分页显示,如果我们导出excel,那么excel也会分成sheet导出,每个sheet是20行。页面展现时20行一页感觉可以,但是用户经常会提要把所有的数据导出到一个sheet中。坛子里也经常有人问怎么实现。我这里列出两种方式,第一种需要两张报表实现,第二种用一张报表实现。

不管采用哪种方法思路都是一样的,我先来介绍一下我的实现思路:同一个列表设置的分页行数和导出excel的分sheet的条件是一样的,这是我们没法改变的,但是我们可以利用两个列表来实现,展现和导出的分页条件不一样,一个list是用来报表展现的,另一个list用来导出。

第一种方法:两张报表,利用穿透钻取来实现导出excel

以Cognos Sample中Sales and Marketing Zh (cube)作为我们演示的package,打开ReportStudio创建一个简单报表report_for_html只包含一个简单的列表,让数据展现时存在分页即可。如下图所示:

 

此时我们将该报表另存为一下,比如report_for_excel,结构都保持一致,只是将列表的分页设置为65535(可以不做此限制,但是如果不做限制,当导出数据超过65535时导出的excel因为单个sheet过大而不能打开)。

 

打开report_for_html这张报表,在工具箱中拖一个文本项目到页面中,并将文本内容设置为“导出Excel”,选中文本项,点击追溯定义,为其设置到report_for_excel的追溯定义。

将报表设置为report_for_excel,格式选中Excel 2007或者其他格式。选中在新窗口中打开,点击确定,最终效果如下图所示

 

运行效果就是报表可以存在分页,导出的excel没有分页,如下图所示

 

注意事项:当报表存在过滤条件时,追溯定义中也必须把参数传递过去。

第二种方法,在一个报表中实现。思路如下:还是两个列表,利用条件样式判断当前的输出模式,若为html则显示展现的list,若为excel则显示导出excel的list。

我们还选用和上次一样的列表,并复制一份,假定上面的list用来报表展现,下面的list用于导出excel,如下图所示:

 

进入条件资源管理器新建一个字符串变量,将表达式设置为ReportOutput(),该函数返回输出格式的名称。可能返回的值包括: CSV、HTML、layoutDataXML、MHT、PDF、rawXML、singleXLS、spreadsheetML、XLS、XML 和 XLWA。新建一个值为HTML,我这里演示只建了一个,可以在创建多个,这样可以控制的更细。

返回到页面资源管理器,为两个list设置样式变量为新建的“字符串1”,设置当值为“HTML”是,输出excel的list的方框类型为无,当值为其他时展现html的list的方框类型为无。

运行报表,显示分页展现的数据,选择导出excel时导出的excel则没有分sheet展现

操作演示的视频放到论坛里了,下载地址如下

http://www.cognoschina.net/club/thread-10061-1-1.html