折腾 VS2008 + ReportViewer + CrystalReports + PrintControl.cab 实现水晶报表本地打印

简介:
 曾经在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控件,这样报表就可以在本地打印了,若还不行,别忘记重新启动IE,重新启动电脑,还不行,就升级到IE8,再不行,先休息一下,再到网络上找找其他资料吧。
<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
 
 6. 网页部分的代码参考如下:
 
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Water.Web.ReXianPriview"
    CodeBehind="ReXianPriview.aspx.cs" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"
    Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<html xmlns=" http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>打印报表</title>
</head>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" style="overflow: scroll;
    overflow-x: hidden">
    <form id="form1" runat="server">
    <CR:CrystalReportViewer ID="ReportViewer" runat="server" Height="50px" Width="350px"
        DisplayGroupTree="False" EnableDatabaseLogonPrompt="False" HasCrystalLogo="False"
        HasDrillUpButton="False" HasGotoPageButton="False" HasPageNavigationButtons="False"
        HasSearchButton="False" HasToggleGroupTreeButton="False" HasViewList="False"
        EnableParameterPrompt="False" PrintMode="ActiveX" 
        HasRefreshButton="True" />
    <asp:HiddenField ID="txtID" runat="server" />
    </form>
</body>
</html>
 
 
 7. 后台参考代码如下:
 
Code
 
8. 若报表预览时,打印按钮、导出按钮没有出现,很可能是服务器上的配套图标文件放错位置了,需要注意
\aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer4\?
这些文件需要放在 wwwroot 下,就是IIS的根目录下才可以,否则也无法直接打印输出到本地。
 
网上有人讲:水晶报表显示 工具条上的 导出、打印、刷新按钮  都是显示为 一个个的 小红叉 似的。点击以后打开一个当前页的新窗口,却没有生成为PDF或者打印。 但是在程序 调试和 在浏览器中查看 的状态下都是正常的。都折腾好几天了,还是没解决问题。这个问题,就是上面的事情导致的,按我讲的折腾一下,就应该会好的。
 
技术再厉害,遇到问题都需要摸索,这次是第二次折腾这个,以前折腾过的经验很多都派上了用处,还比较顺利一些,
但是还是用了4-5个小时才把问题都解决好,所以我把经验写下来,分享给将来需要的人查阅,尽量少浪费宝贵的生命,时间就是金钱,我们不是弄不出来,或者做不出来,而是看能否在最短的时间里见效,只要给我时间,我什么管理系统都能做出来,但是等我做出来,我的客户都倒闭了,还要这个东西干啥用啊,黄瓜菜都凉了。
 
以上文章,希望能对有所需要的人起一点儿帮助作用,或者遇到麻烦了,可以参考一下,还有一些人不知道如何
将报表进行本地打印的,报表可以在本地导出各种格式的文件, 有大部分人不知道报表可以本地打印的。
 
 
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。




本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/448273,如需转载请自行联系原作者
相关文章
|
Unix 索引 Python
BackTrader 中文文档(一)(2)
BackTrader 中文文档(一)
591 0
|
并行计算
最新YOLOv8(2023年8月版本)安装配置!一条龙傻瓜式安装,遇到问题评论区提问
最近需要使用YOLOv8,百度了一下现在网上大多数教程都是比较早期的教程,很多文件已经大不相同,于是我根据官方readme文档,总结了一套安装方法,只需要按照本教程,复制每一段代码,按照教程配置好相应文件即可直接使用。
9137 2
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
1090 4
数据分析的 10 个最佳 Python 库
|
XML Java 数据格式
Spring高手之路18——从XML配置角度理解Spring AOP
本文是全面解析面向切面编程的实践指南。通过深入讲解切面、连接点、通知等关键概念,以及通过XML配置实现Spring AOP的步骤。
340 6
Spring高手之路18——从XML配置角度理解Spring AOP
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
3362 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
消息中间件 SQL NoSQL
再记一次止于三面的阿里面试之旅
Hello 大家好,我是阿粉,最近心情不是很好,因为阿粉面试阿里三面挂掉了, 当收到下面这封邮件的时候阿粉内心是拔凉拔凉的。阿粉被 “Unfortunately”,“another candidate” 这几个词深深的伤害到了。不过伤心归伤心,该自我总结还是得自我总结的,有机会再战。
|
存储 设计模式 Java
阿里官方代码规范
这篇文章详细介绍了阿里巴巴官方的代码规范,包括命名规则、常量使用、方法覆写、并发处理、注释规范、数据库设计等多个方面,旨在提高代码的可读性、维护性和扩展性。
【异常】svn: E200009: Commit failed (details follow)/both sides of the move must be committed together的解决办法
svn: E200009: Commit failed (details follow)/both sides of the move must be committed together的解决办法
1004 0
|
数据可视化
BackTrader 中文文档(三)(3)
BackTrader 中文文档(三)
217 0