`
李大龙
  • 浏览: 71403 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

reportingservice 报表开发之Excel分sheet导出

阅读更多

  

VS文档关于报表导出Excel的限制 写道
Excel 限制
由于 BIFF 的格式功能,Excel 对于导出的报表存在一些限制。最重要的限制包括:

1、工作表的最大行数限制为 65,536 行。如果超出此限制,呈现器会显示错误消息。


2、工作表的最大列数限制为 256 列。如果超过此限制,呈现器会显示错误消息。


3、最大列宽限制为 255 个字符(或 1726.5 磅)。呈现器不会验证列宽是否小于此限制。


4、最大行高为 409 磅。如果行内容导致行高超过 409 磅,则内容将被拆分并添加至下一行。


5、单元格中的最大字符数限制为 32,767 个。如果超出此限制,呈现器会显示错误消息。

 

另外,超出65536行记录,希望通过分sheet导出Excel文件,VS文档也有说明:

VS文档在报表导出Excel呈现器 写道
分页
此呈现器仅支持逻辑分页符。对于每个明确定义的逻辑分页符,均会创建一个新的 Excel 工作表选项卡。

 

 因此,实现分sheet导出,最基本的方向是开发报表时设置分页

 

分页,在写报表数据集SQL时,可以增加一列 PAGES, 设定妹60000行记录为一个页:

 

SELECT  CEIL( ROWNUM / 60000 ) AS PAGES, 
              ....
FROM  TABLE_NAME

 然后,在新建报表时,可以选定以 PAGES 列作分页:

             

 

这是,在新建报表时设定分页,然后再导出Excel时,Excel会把每一页的数据放在不同的一个sheet页面中。

 

 

 

还有,另外一种方法就是根据分组分页。

其实,通过第一种方法,通过观察报表发现,报表容器是根据 PAGES 来分组,所以这个方法也是这里的一个分支。

根据组分页,每个不同的组实例之间可以添加一个分页符,达到分页的效果。

操作: 在组属性窗口,勾选“在组的各实例之间”添加分页符即可:

   

 

另外,各组件之间也可以添加分页符,选定组件,右键,属性,可以选择在组件前面或者后面添加分页符。

 

 

本人在网上也找到一篇和本文相同主题的文章,写得蛮清楚的,给出链接:

http://www.cnblogs.com/OpenCoder/archive/2010/11/11/1875207.html

 

值得一提的是,这样手工分页有个弊端

没有手工分页之前,在前台展现SSRS即席报表,默认首页展现50行记录,导出数据则在一个Excel文档。

一旦手工设置了分页,例如每页设置60000行记录,则在前台展现时首页也展现60000行记录,前台报表渲染展现有一定的压力,通过测试,发现耗时多了,并且有可能产生内存溢出问题。

 

针对这一问题,本人已经查阅了很多网站以及VS的文档,目前还没有找到一个很好的解决方案。所以设置报表分页需要衡量得失!

 

备注: 针对以上问题解决方法的猜想,SSRS是否支持设置每页(或首页)展现数据记录数的设定,如果可以通过设置可以分清导出和展现的不同分页设置,即可达到一个比较完美的效果。  如果以后发现有方法,再补充!

 

  • 大小: 9 KB
  • 大小: 31.3 KB
分享到:
评论
2 楼 sea0108 2011-12-01  
good!BI开发指南!
1 楼 sea0108 2011-11-29  
  龙哥的开博,是IT博客事业一小步,却是我们IT分享精神的一大步!!

相关推荐

Global site tag (gtag.js) - Google Analytics