水晶报表貌似是比较“古老”的报表技术了,它是由SAP公司开发的报表产品,通过安装开发包可以在VS中集成Crystall Reports设计器。通过可视化的设计和操作,可以完成报表的制作。正好最近有空帮朋友一个小忙,他也提到了使用水晶报表技术完成报表的批量打印和导出。N年不用水晶报表了,正好练练手。
开发工具我们选用目前主流的VS2010旗舰版。VS2010默认是不集成水晶报表的,需要安装开发包CRforVS_13_0.exe。这里我提供一个下载地址,方便大家下载安装。
http://yunpan.cn/cVzPeMMWnJqFv 访问密码 238a
下面将演示在asp.net下如何使用水晶报表开发一个报表应用程序。该应用程序实现了从access数据库中读取相关信息(包含图片),并在我们设计的报表模板中显示。最终实现批量打印、导出等基本功能。
首先新建一个asp.net项目,然后新建Crystal Reports文件。
我们新建一个空白报表。
然后我们就可以在这张空白报表中设计我们想要的东西了,如下图所示:
右键数据库字段,选择数据库专家。
在弹出的对话框中,创建新连接,选择我们的access数据库。
然后就可以在右边的数据库的字段列表中选择相应显示的字段,拖动到右边的设计器相应位置(删除掉页眉部分重复的字符串文本框)。
但是由于照片信息存放的是图片的二进制数据,直接拖动后在设计器中是可以显示的,但是网页不能正常显示,这时候需要注意设置一下Web.config。添加如下节点:
<httpHandlers> <add path="CrystalImageHandler.aspx" verb="GET" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" /> <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" /> </httpHandlers>
之后运行才可以直接显示数据库中的图片了。
最后运行项目之前,还有几个细节需要交代一下:
1、报表每页显示不完整,最后老是多出一页空白页
这个问题的产生是因为页面有多余的部分没有去除,需要做如下设置:
2、字体对齐等如何设置
数字不显示逗号
准备工作完毕,我们就可以在页面中直接显示了。
直接在页面中拖动一个CrystalReportViewer控件即可。它会帮我们自动做好很多事情,包括引用相应的dll等等。最后在页面后台写如下代码即可。
protected void Page_Load(object sender, EventArgs e) { ReportDocument rd = new ReportDocument(); rd.Load(Server.MapPath("~") + "CrystalReport1.rpt"); rd.SetDataSource(xxx);//xxx为你的数据源dataset this.CrystalReportViewer1.ReportSource = rd; }最后看一下效果图:
批量打印、导出(word、excel)都妥妥的,水晶报表在这方面真是既省心又省力啊。