Visual Studio 2010 和中国式报表(RDLC)

  在项目中选择一种好用的报表工具一直是一件很困扰的事情。由于国内项目报表的特殊需求所以要在.net环境下选择一种合适的报表,总是让人觉得不是那么的满意。

  从常见项目中使用报表的角度出发,我们使用报表的需求其实很单一,大多数情况我们只需要这样一种报表。

  1、纯平面表格形式。

  如果常见的报表都支持,纯文本、表格、列表、矩阵、图片、图表、仪表、子报表、嵌套报表的话。实际上真正常用的可能只是,表格、列表和矩阵。首先、从客户的技术层次出发,过于复杂的表现表现形式,不见的对客户有用。一般报表的使用着都不是电脑的操作高手。此次、客户喜欢或习惯里看平面的报表,不是说下钻不好,而是客户希望你将所有可能的信息在一个见面里全部直观展现出来。按照以前我的一个客户的老板的说法就是,你最好我一打开什么信息都有了。所以往往设计出来的报表很不规则,虽然只是一个平面的表格报表。却难倒了一片报表工具。

  典型的报表格式可能是这样:(下面是我做过的一个项目中的真实的报表,在这个项目中有共计报表进100张)

  XXXXX集团主要销售指标完成情况

 

  2、我们需要一个一个斜线、和多行表头

  在这一点上大多数的报表工具几乎都可能通过变通的方式来满足需求,但基本上在导出Excel或其他格式之后以及打印报表的时候,斜线全不见了。很多报表工具用拼接或表格套表格的方式达到目标,这时有产生了其他方面的问题。如果是像下面这种斜线,一般报表工具就更加为难了。应对于水晶报表等其他报表工具,很多用Delphi开发的国产的报表工具还表现不错,但是要在.net的项目中用这种报表总是让人觉得心里很别扭。

  

  3、报表工具的其他用途

  我们公司的一个项目经理喜欢借助报表的预览和打印功能来完成其他一些功能,如:合同的打印、单据的打印。谁说这不可以呢。这就要求报表工具最好能实现一些开放功能的API接口。这一方面外国的报表工具基本上都能支持。只是感觉好像他们提供的不恨是我们想要的。

  4、一些对报表工具的变态的要求

  有一个同事来找我帮忙解决这样一个问题。客户在导出报表之后,要求用windows系统自带的搜索功能,搜索到某个指定关键字的文件。很奇怪,水晶报表导出的word格式文件中,搜索不到汉字在表格中的文件。例如:一个word文件中有一个表格,如果用表格中的汉字作为搜索的关键字,就搜不到了。经查看才知道,水晶报表导出的word文件,文字全部放在了一个文本框之中,而不是直接写到表格里。最后我给他提供了两种方案解决,1、让他自己实现一种导出word的方法。2、说服客户用系统自带的搜索功能。他最终选择了后者。之所以认为是变态的要求其实是报表工具的不完美,不是所有的客户都会妥协。既然我们也可以是报表工具的客户,我们也有权利向他们提出这种变态的要求。

  很多项目中我们都对报表的强大功能和丰富的表现力要求不是很强烈,根本就不需要什么这功能那功能,但我需要它能把它的基本的功能做到极致。很多时候客户不是上帝,而是我们的衣食父母。就算你能很快速的满足他们的90%的需求,但是只有有10%的需求不能满足,他们会认为你们不行。一种b/s下极端的通用的问题解决方案就是。所有的报表有美工完成静态的html表格.然后又开发人员在表格中插入数据,或者用asp.net 页面插入后台代码(<%  %>)的语法对表格进行循环。不幸的是真的有人这么做过。

  做行业顾问、或者是做企业管理解决方案有时候是一种美丽的神话和骗局。我甚至不相信sap能真正教导他的大型客户管理,所做的也只是尽可能满足客户的需求罢了。

  在大型的产业中,软件公司不可能指导客户管理,更不可能对客户行业做出规范。我们的客户都是上亿资产的公司,可能发展了几十年。而我们只有几千万的资本,发展积累也只不过几年的时间,就算了解、和追赶也有好多年的差距,所以我们怎么可能去规范客户业务。

  如果有行业顾问,不可能出自软件公司。真正能规范客户业务的不是软件公司,而是客户自己本身。所以我们所说的规范,也只是是规范我们的软件操作罢了,也可能是处于对复杂的业务环境的一种妥协。

  写了这么多发现有点扯的太多了,到现在为止还没有进入正题。好了长话短说,今天主要想说的是微软的报表,也就是Visual Studio自带的报表工具。既然是介绍它那必选先夸他一下。

  广告1:有了微软报表工具,我再也不为找报表工具发愁了。

  广告2:自从有了微软报表工具,斜线不用愁了,复合表头实现了,也在不怕和客户谈需求了。

  广告3:使用微软报表,是您.net项目下最佳的选择。

  广告4:小刘干嘛呢?

  研究水晶报表。

  别研究了,我给你介绍一件新工具:微软报表。

  还在研究水晶报表?

  水晶报表是什么?

  要使用微软的报表,首先我们用到的是ReportViewer这个控件,然后要将这个控件指向一个报表文件,可以选择服务器报表和本地报表两种模式。及 (RDLC和RDL)两种报表文件采用同一种XML格式。有2种工具可以产生报表文件。1是vs2010,另一个是Report Builder 3.0后者采用office系列的外观模式,主要是面向的非开发人员自定义报表。微软视乎绝的像做报表这样简单的事情就不需要开发人员了。

  如果你使用过vs2008的微软报表工具,你会发现在vs2010中报表设计器发生了巨大的变更。

  编辑器的改良,更具有可操作性和实用性。

  集成了全球最好的dundas图表、仪表控件。

  解决了原来的纵向单元格不能合并的问题。使用起来就像操纵html编辑器。

  解决了矩阵中动态行、列和静态列共存的问题。

  增加了报表块的功能。

  更完美的互交式排序支持。

  更强浏览器的打印功能。

  行头、列头的冻结功能。

  加上原有的功能,与.net的浑然天成,强大的API接口。几乎是我心慕中完美的报表。

  最后贴几张图片,因为需要实际的复杂点的例子才能够说明问题,所以有机会将来用他做一个具体的案例在做说明了。

  

  查看原图(大图)

  查看原图(大图)

  查看原图(大图)

  查看原图(大图)

  查看原图(大图)

  MSDN中关于Visual Studio 2010版的帮助文档还没有更新,大家要学只能先看sql server 2008的文档了。

  我这里收集了一些自定义RDL文件的资料和开源报表引擎项目,有需要的回复索取了。

posted @   从此启程  阅读(1229)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示