VS2008实现CrystalReports本地打印解决方案
"实现水晶报表本地打印" 在开发应用程序时,有时需要提供用户友好的报告输出功能,这通常涉及到报表工具的使用。在.NET框架中,水晶报表(Crystal Reports)是一款广泛使用的报表设计和呈现工具,尤其在Visual Studio 2008(VS2008)环境下,它能够帮助开发者创建复杂的报表并支持多种数据源。本文将详细介绍如何在VS2008中实现水晶报表的本地打印功能。 首先,确保你已经安装了 Crystal Reports 的支持库。VS2008 自带了对 Crystal Reports 的集成支持,但可能需要更新到最新版本以获得最佳兼容性和功能。如果使用的是VS2005,同样需要检查 Crystal Reports 的版本是否适合你的项目需求。 其次,为了实现在Web应用中的本地打印,你需要引入ReportViewer控件。ReportViewer是Microsoft提供的一个用于显示和打印报表的控件,它可以与Crystal Reports一起工作。如果你的项目基于VS2008,那么需要下载适用于VS2008的ReportViewer控件;如果是VS2005,则需要下载对应的版本。确保控件已正确安装并添加到项目引用中。 接下来,你需要获取并部署PrintControl组件。这是一个ActiveX控件,由Business Objects(现为SAP的一部分)提供,用于水晶报表的本地打印功能。对于VS2008,你可以从官方支持网站下载适用于VS2005的PrintControl.cab文件,然后将其更新为VS2008版本。对于VS2005项目,可以直接使用提供的链接下载。将PrintControl.cab部署到Web服务器上,并确保所有客户端可以访问。 在HTML页面中,你需要嵌入PrintControl控件。通过创建一个`<object>`标签,指定类ID(ClassID)和代码基(CodeBase),并设置版本信息。这里的类ID和版本号应与你下载的PrintControl控件匹配。这个控件允许用户在浏览器中直接打印报表,无需离开当前页面。 配置Web.config文件是实现打印功能的关键步骤。在`<configuration>`节点下,添加一个`<section>`元素,定义名为"printControl"的自定义配置节,以便在运行时加载PrintControl控件。同时,确保版本信息与PrintControl控件一致,以避免加载错误。 最后,通过编写代码来调用报表和PrintControl控件,使用户能够触发本地打印。这通常涉及生成报表、设置报表参数,然后将报表传递给PrintControl控件进行打印。在ASP.NET中,这可能涉及到Page_Load事件或按钮点击事件的处理。 实现水晶报表在本地的打印功能涉及多个步骤,包括安装和配置报表工具、部署PrintControl组件、配置Web应用以及编写相应的代码。遵循上述步骤,你将能够为用户提供一个流畅的本地打印体验,而无需依赖服务器端的打印服务。在实际操作中,根据项目具体需求和环境,可能还需要调整一些细节,例如处理跨域问题、权限控制等。
转载:
曾经在VS2005时,找了很多资料折腾了一个通宵把网页本地打印折腾出来了,微软的有些东西虽然好用吧,报表这个总是弄不好一样,非常想念Microsoft Visual FoxPro 的报表,大概都是10年前的事情了,用那个VFP做报表,又好用又简单,功能也很强大,特别是排版非常容易,不知道微软都在搞啥网页报表就是折腾总是会遇到很多问题,IE8以前的版本的网页打印也很若,非常闹心,想实现一个最简单的网页打印功能就好比上天一样折腾人,也可能是我的水平有问题吧,不过我们很多同事也弄不好这个。
接下来直接谈我的折腾过程:
1. VS2008 安装好后,应该是自带一个 CrystalReports ,总感觉 CrystalReports 不是微软的,好像是被SAP收购了一样,具体我不是很清楚,而且各种版本特别多,有时候到底要引用哪个版本也是让人头疼一些。
2. 想实现本地打印,我总感觉需要下载一个微软的 ReportViewer,而且是For VS2008的,也有For VS2005的,我也没测试过这个是否是必要的组件,装上就可以了,这个是在网页里显示报表用的。
3. PrintControl 比较折腾人,也后很多版本的,For VS2008 需要在网络上下载,写明链接的地方非常少,http://support.businessobjects.com/CRforVS2005/PrintControl.cab 这个地址是 For VS2005的,我自己想象了一下把2005修改为2008后,能下载 For VS2008 具体地址如下 http://support.businessobjects.com/CRforVS2005/PrintControl.cab
4. 写一个html文件,自动安装ActiveX控件,这样报表就可以在本地打印了
<html>
<object id="CrystalPrintControl" classid="CLSID:83A3D1E4-ADC6-434D-9B61-B8CBA6183441"
codebase="http://www.cnblogs.com/../UploadFiles/ActiveX/PrintControl.cab" version="10,5,1,2285"
viewastext>
</object>
</html>
这里就是 classid、version 等的配置比较闹心,因为不同的版本,这些号码都不一样,若对不上,就会崩溃了,
先通过这个网页,可以先把客户端打印的控件装上。
5. 接着就是配置 web.cong 了,我把我的配置文件贴上来,有需要的朋友可以参考,这里需要注意的是
<section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" />
这里的Version也有很多种类的,我按最新的10.??多少一用,就会出错,我又退回来用这个,程序就正常了。
Code
<?xml version="1.0"?>
<configuration>
<configSections>
<!--magicAjax配置-->
<section name="magicAjax" type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
<!--结束magicAjax配置-->
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>
</sectionGroup>
</sectionGroup>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<printControl>
<add key="url" value="http://192.168.10.89/UploadFiles/ActiveX/PrintControl.cab" />
</printControl>
</crystalReports>
</businessObjects>
<appSettings>
<add key="DbConnectionString" value="Server=192.168.10.88;Database=LinAnWater;Uid=sa;Pwd=sa;max pool size=30;min pool size=10" />
<add key="RecordLog" value="True" />
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
<add key="CrystalImageCleaner-AutoStart" value="true" />
<add key="CrystalImageCleaner-Sleep" value="60000" />
<add key="CrystalImageCleaner-Age" value="120000" />
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 批量文件重命名神器:HaoZipRename使用技巧
- 简洁注册登录界面设计与代码实现
- 掌握Python字符串处理与正则表达式技巧
- YOLOv5模块改进 - C3与RFAConv融合增强空间特征
- 基于EasyX的C语言打字小游戏开发教程
- 前端项目作业资源包:完整可复现的开发经验分享
- 三菱PLC与组态王实现加热炉温度智能控制
- 使用Go语言通过Consul实现Prometheus监控服务自动注册
- 深入解析Python进程与线程的并发机制
- 小波神经网络均衡算法:MATLAB仿真及信道模型对比
- PHP 8.3 中文版官方手册(CHM格式)
- SSM框架+Layuimini的酒店管理系统开发教程
- 基于SpringBoot和Vue的招聘平台完整设计与实现教程
- 移动商品推荐系统:APP设计与实现
- JAVA代码生成器:一站式后台系统快速搭建解决方案
- JSP驾校预约管理系统设计与SSM框架结合案例解析