• 如何使导出的excel和报表分页设置不一样


    我们以列表为例,默认的行数是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

  • 相关阅读:
    P1135 奇怪的电梯题解
    P1443 马的遍历题解
    P2392 kkksc03考前临时抱佛脚题解
    P1219 八皇后问题题解
    IDEA导入/导出live templates或者其他设置
    P3743 kotori的设备题解
    带你看论文丨全局信息对于图网络文档解析的影响
    【“互联网+”大赛华为云赛道】EI命题攻略:华为云EI的能力超丰富,助你实现AI梦想
    【“互联网+”大赛华为云赛道】IoT命题攻略:仅需四步,轻松实现场景智能化设计
    只需6步,教你从零开发一个签到小程序
  • 原文地址:https://www.cnblogs.com/interboy/p/1863695.html
Copyright © 2020-2023  润新知