对于上篇中提到的报表我们以如下的事例,来说明如何做:报表事例图: 模板图:
来源数据图:(即为上图中Data2中的数据)
生成报表图:
现在相信大家己经看出来了,我的报表是在Excel中完成的,我们的报表在项目中都是借助excel来实现的,将生成的报表传到我们的MOSS上 Excel服务器上供用户查看以用下载。借助于excel中的透视表来做,基本上能够满足各种需求。当然对于特别特别复杂的我们可以自己定义想要的模板。完成如上图的报表我们要做的准备工作如下: 报表的数据来源: 根据我们报表的展示需求,我们先来确定下呈现报表所需要的数据,写好数据的返回格式,以便于写存储过程从项目中提取我们所需要的数据。如我们现在要生成如上图的报表,通过分析发现,我们需要如源数据图中的这些数据,到此数据的需求格式我们就定下来了。 报表的模板: 根据上面我们分析需要的数据,我们来制作报表的模板。在此我特别说明一下,模板是透视表,是根据上图中的Data2字段来生成的。对Excel透视表不清楚的,在此我一两句也说不清,网上有很多教程,可以去先学习下。再来做模板,及数据返回需求的格式分析就会不感到吃力。 数据写入到Excel: 怎么把数据写到Excel的Data2中是我们这次报表生成的关键。要想把数据写到Excel中我们要借助于一个微软开源的程序: OpenXML。 下面我们来看一下OpenXML是什么,其实OpenXML并不是一种新技术,它早在2006年就出来了,只是在网上介绍它利用它来操作Excel的说明文章和示例太少了,也就很少有人去应用它了。OpenXML(OOXML)是微软在Office 2007中提出的一种新的文档格式,Office 2007中的Word、Excel、PowerPoint默认均采用OpenXML格式 。OpenXML在2006年12月成为了ECMA规范的一部分。至于它的其它介绍,大家到网上查看吧,它的功能是非常强大的。我们今天主要用它来操作Excel。 在介绍如何做之前,我们先做好准备工作: 第一、 报表的模板:我们已经在上面做好了。 第二、 下载OpenXMLSDKv2.msi,(下载地址:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124)安装一下OpenXMLSDKv2.msi,在项目中引用 DocumentFormat.OpenXml.dll 和WindowsBase.dll 准备工作做完了,现在看看如何把我们查询出的数据写到Excel中,生成报表吧。 代码如下: ![]() ![]() 1 public byte[] WriteToExcel( CarryResource CarryResource, string ModelUrl) 现在我们报表是以流的形式存在于内存中,在我的项目中,我是把流上传到MOSS上的Excel server服务器供用户查看及下载。在此我们可以把流下载到本地看一下效果。 ![]() ![]() 1 byte[] bytes = WriteToExcel( CarryResource CarryResource, string ModelUrl)//这两个参数,我就不写值了。
下载后打开就可以看到如下的报表了: 至此,我们的报表就生成好了,其实,OpenXMl还有很多种其它的用法,方法也有很多种,我这里只是一种最简单,也是最有效的用法。起到一个抛砖引玉的作用。希望大家深深挖掘它,和大家来一起分享。最后一篇《万能报表之图片篇》最晚我也将会在这个星期天写出来,分享给大家。大家有什么不明白的地方可以留言一起讨论,进行编辑完善。 |
|