找回密码
 FreeOZ用户注册
查看: 2038|回复: 2
打印 上一主题 下一主题

[论坛技术] 分享我的经验----如何批量制作客户报表

[复制链接]
跳转到指定楼层
1#
发表于 21-9-2010 19:11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除, 无法发言

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
MS SQL + SSRS 方式:用SSRS代替Excel,好处是所有的报表更新都由SSRS代理账户完成,不需要在数据库端给客户设计访问权限,而且SSRS有一些Excel无法代替的功能,当然,Excel处理数据的强大,也不是SSRS能够代替的。所以,SSRS 和 Excel 各有各自的强项和弱项,视具体情况而定。

我用了一段时间SSRS,感觉基本报表功能不错,不过在于动态数据的处理上和Excel的差距还是很大的,比如在表格上加动态过滤,客户可以选择看想要看的数据,比如Pivot Table的功能也比Excel差远了。还有就是开发上不如Excel迅速,Excel的公式功能也是强大无比。这些SSRS都不行。

我觉得SSRS高一些标准开发,一些不太复杂的报表还行,复杂的还是非Excel莫属。不过Excel也有缺点,最大的缺点就是Excel上的数据的更新是被动的,Excel的数据刷新需要:

用户手动完成 (需要给用户在数据库端设计权限)
每次打开文件的时候自动完成 (不能够自动化,如果数据量大,用户不需要刷新,每次打开刷新,很费时)
专人手动刷新,然后保存发给客户(需要一个人专门来做这个工作)

鉴于以上缺点,能不能即用Excel,又能够避免以上的不便呢?可以!

=======================================================================================

MS SQL + Excel
在 MS SQL 上准备好数据,手动复制粘贴到Excel排列格式

MS SQL + Excel + SharePoint
在上面基础上,把制作好的报表上传到SharePoint上保存给客户

MS SQL + SSAS (Cubes) + MS Excel (Pivot Table) + SharePoint
在上面的基础上,借助SSAS的强大功能,制作更加灵活和复杂的报表

MS SQL + SSAS (Cubes) + MS Excel (Pivot Table) + SharePoint + PowerShell
终极方式就是这个啦,把手动更新的任务交给脚本语言完成!

在MS SQL Server上制作好了数据表,也就是成品表格,把所有的计算都在SQL端完成,利用Excel连接到SQL,获取数据列表,并制成Pivot Table,这样做的好处是:计算都在SQL端完成,计算效率高,采用Excel制作报表功能强大。报表直接上传到SharePoint,客户只要到SharePoint上打开报表,使用宏或者手动刷新就可以。

缺点是:需要客户自己手动刷新数据,需要在数据库端给客户设计访问数据库的权限,客户多了不容易管理,安全性和SQL数据库端的负担也大

当然,你也可以专门找一个专人每天手动为客户刷新报表,然后保存到SharePoint上,这样你不需要为单独的客户设置权限,不过你需要你需要一个专人来干这个刷新。

采用PowerShell代替人来刷新,如果你有100个客户,你可以制作100的报表都不一样,让脚本帮你完成刷新,然后分发给客户!!!!

评分

参与人数 1威望 +50 收起 理由
coredump + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

2#
 楼主| 发表于 21-9-2010 19:14:23 | 只看该作者

我用来完成刷新工作PowerShell脚本

提示: 作者被禁止或删除, 无法发言
  1. write-host "Starting process..."

  2. $ExcelApp = new-object -ComObject Excel.Application
  3. $ExcelApp.Visible = $false
  4. $ExcelApp.DisplayAlerts = $false

  5. $Workbook = $ExcelApp.Workbooks.Open("TestRevenue.xls")

  6. $Workbook.RefreshAll()

  7. Start-Sleep -sec 1

  8. $Workbook.RefreshAll()

  9. Start-Sleep -sec 1

  10. $Workbook.Save()

  11. $ExcelApp.Quit()

  12. write-host "All excel files have been upadted."

  13. $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
复制代码
使用两次 RefreshAll,我想这个是Excel的一个Bug,仅仅调用一次,只能更新数据列表,那些Pivot Table都不更新,不过如果你调用两次刷新操作,就全部更新啦!!使用那个 Start-Sleep -sec 1秒钟也是不得已,看似这个也是一个BUG,不暂停,就报错。
回复  

使用道具 举报

3#
 楼主| 发表于 21-9-2010 19:15:43 | 只看该作者

我主要介绍脚本

提示: 作者被禁止或删除, 无法发言
至于如何用Excel连接数据库,如何连接SSRS,如何制作Cubes,如何设计Excel Pivot Table 不再本帖讨论范围。大家接着发挥啊。
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 22-9-2025 06:33 , Processed in 0.015847 second(s), 21 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表