水晶报表技术(8)——如何在.Net Web应用中使用水晶报表3

简介:
我们采用下面的几步使用 Push 模式执行水晶报表:
1. 
设计一个 DataSet
2. 
创建一个 .rpt 文件同时将其指定给上一步建立的 DataSet
3. 
aspx 页面中拖放一个 CrystalReportViewer 控件同时将其与前面的 rpt 文件建立联系。
4. 
在代码中访问数据库并把数据存入 DataSet
5. 
调用 DataBind 方法。
 
设计一个 DataSet
1) 
右击 解决方案浏览器 ,选择 添加 ”--“ 添加新项 ”-->“ 数据集
  
2) 
服务器资源管理器 中的 “SQL Server” 中拖放 “Stores” ( 位于 PUBS 数据库中 )
 

3)  此时在数据集中就会有一个 Stores 表的结构图。
 
- .xsd
文件中仅仅包含一个结构图,但是不会有任何数据在里面。
创建  .rpt  文件  :
4) 
使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
5)
建立 .rpt 文件之后,右击 详细资料 ”-->" 添加/删除数据库
6) 
数据库专家 窗口中,展开 项目数据 “( 代替以前的 OleDb) ,展开 “ADO.Net 数据集 ”--"DataSet1“ ,选择 ”Stores“ 表。
7) 
”Stores" 表添加到 选定的表 中,点击 “OK”
 
 

8)  使用 PULL 模式下的方法,建立一个 WebForm
建立一个 Crystal Report Viewer  控件
9) 
建立一个 Crystal Report Viewer  控件,并设定其属性,此处与 PULL 模式下是一致的。
Code Behind 
代码 :
10) 
Page_Load 方法中使用下面的子函数:
VB.Net
代码:
    Sub BindReport()
        Dim myConnection As New SqlClient.SqlConnection() 
        myConnection.ConnectionString= "server= (local)\NetSDK;database=pubs;Trusted_Connection=yes"
        Dim MyCommand As New SqlClient.SqlCommand()
        MyCommand.Connection = myConnection
        MyCommand.CommandText = "Select * from Stores"
        MyCommand.CommandType = CommandType.Text
        Dim MyDA As New SqlClient.SqlDataAdapter()
        MyDA.SelectCommand = MyCommand
        Dim myDS As New Dataset1()
       '
这就是我们在设计模式上使用的 DataSet     
        MyDA.Fill(myDS, "Stores")   
        '
你不得不使用与你前面 DataSet 相同名字。
        Dim oRpt As New CrystalReport1()
         ' 
水晶报表绑定
        oRpt.SetDataSource(myDS)
         ' 
设定水晶报表的 ReportSource
        CrystalReportViewer1.ReportSource = oRpt
    End Sub
C#
代码:
private void BindReport()
{
    string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
    CrystalReport1 oCR = new CrystalReport1();
    Dataset1 ds = new Dataset1();
    SqlConnection MyConn = new SqlConnection(strProvider);
    MyConn.Open();
    string strSel = "Select * from Stores";
    SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
    MyAdapter.Fill(ds,"stores");
    oCR.SetDataSource(ds);
    this.CrystalReportViewer1.ReportSource = oCR;
}
 
注意:在上面的代码中,你得注意一下 oRpt "Strongly Typed" 的报表文件。如果你需要使用 "UnTyped" 报表,你得使用 ReportDocument 对象,然后再调用报表文件。
 
运行你的程序。  
11) 
运行你的程序
  
将报表文件导出成为其它格式

你能够将报表文件导出成为下列格式:
             1. PDF (Portable Document Format) 
1.                                 2. DOC (MS Word Document) 
2.                                 3. XLS (MS Excel Spreadsheet) 
3.                                 4. HTML (Hyper Text Markup Language – 3.2 or 4.0 compliant) 
4.                                 5. RTF (Rich Text Format)

使用 Pull 模式导出报表
当导出使用 Pull 模式创建的文件时,水晶报表准确地打开所需要的数据,下面是执行导出功能的代码:
 C#
代码 :
VB.Net
代码 :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myReport As CrystalReport1 = New CrystalReport1()
      '
注意:这里我们建立一个 strong-typed 的水晶报表实例。
        Dim DiskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions()
        myReport.ExportOptions.ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile
        ' 
导出成为其它文件时也需要这个选项
        ' 
Microsoft Exchange, MAPI .        
        myReport.ExportOptions.ExportFormatType = CrystalDecisions. [Shared].ExportFormatType.PortableDocFormat
        '
这里我们导出成为 .pdf 格式文件,你也能选择上面的其它类型文件
        DiskOpts.DiskFileName = "c:\Output.pdf"
        '
如果你不指定确切的目录,那么文件就会保存到[ Windows]\System32 目录中去了
        myReport.ExportOptions.DestinationOptions = DiskOpts
        '
水晶报表文件不包含直接的 FileName 属性,因此你不能直接指定保存的文件名
        '
所以你不得不使用 DiskFileDestinationOptions 对象,设置它的 DiskFileName 属性
        '
为你想要的路径,最后将水晶报表的 DestinationsOptions 属性指定为上面的 DiskFileDestinationOption
        myReport.Export()
        '
上面的代码将完成导出工作。
End Sub
 
使用 PUSH 模式导出水晶报表
当导出的报表是由 PUSH 模式建立的时,第一步就是通过编程建立连接并组装 DataSet ,设置报表的的 SetDataSource 属性。再下面的步骤就有 Pull 模式一样的了。




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203450,如需转载请自行联系原作者

目录
相关文章
|
1天前
|
监控 网络协议 API
.NET WebSocket 技术深入解析,你学会了吗?
【9月更文挑战第4天】WebSocket 作为一种全双工协议,凭借低延迟和高性能特点,成为实时应用的首选技术。.NET 框架提供了强大的 WebSocket 支持,使实时通信变得简单。本文介绍 WebSocket 的基本概念、.NET 中的使用方法及编程模型,并探讨其在实时聊天、监控、在线游戏和协同编辑等场景的应用,同时分享最佳实践,帮助开发者构建高效实时应用。
31 12
|
1天前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
26 10
|
2天前
|
前端开发 安全 JavaScript
构建高效Web应用:前后端分离架构的实践
【9月更文挑战第4天】在数字时代,Web应用已成为企业与用户互动的主要平台。本文将介绍如何通过前后端分离的架构设计来构建高效的Web应用,探讨该架构的优势,并分享实现过程中的关键步骤和注意事项。文章旨在为开发者提供一种清晰、高效的开发模式,帮助其在快速变化的市场环境中保持竞争力。
|
6天前
|
中间件 编译器 数据处理
在web开发中应用管道过滤器
【9月更文挑战第1天】本文介绍管道-过滤器架构将数据处理流程分解为一系列独立组件,通过管道连接,适用于数据流处理如图像处理、编译器设计等。通过具体实例说明了Gin如何有效支持管道-过滤器风格的设计,构建高性能Web服务。
25 9
|
5天前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
25 7
|
1天前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
9 0
|
7天前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
16 0
|
7天前
|
开发者 API Windows
从怀旧到革新:看WinForms如何在保持向后兼容性的前提下,借助.NET新平台的力量实现自我进化与应用现代化,让经典桌面应用焕发第二春——我们的WinForms应用转型之路深度剖析
【8月更文挑战第31天】在Windows桌面应用开发中,Windows Forms(WinForms)依然是许多开发者的首选。尽管.NET Framework已演进至.NET 5 及更高版本,WinForms 仍作为核心组件保留,支持现有代码库的同时引入新特性。开发者可将项目迁移至.NET Core,享受性能提升和跨平台能力。迁移时需注意API变更,确保应用平稳过渡。通过自定义样式或第三方控件库,还可增强视觉效果。结合.NET新功能,WinForms 应用不仅能延续既有投资,还能焕发新生。 示例代码展示了如何在.NET Core中创建包含按钮和标签的基本窗口,实现简单的用户交互。
28 0
|
7天前
|
Java Spring 自然语言处理
Spring 框架里竟藏着神秘魔法?国际化与本地化的奇妙之旅等你来揭开谜底!
【8月更文挑战第31天】在软件开发中,国际化(I18N)与本地化(L10N)对于满足不同地区用户需求至关重要。Spring框架提供了强大支持,利用资源文件和`MessageSource`实现多语言文本管理。通过配置日期格式和货币符号,进一步完善本地化功能。合理应用这些特性,可显著提升应用的多地区适应性和用户体验。
16 0
|
7天前
|
开发者 C# Android开发
Xamarin 与 .NET:解锁现代化移动应用开发的超级武器——深入探讨C#与.NET框架如何赋能跨平台应用,实现高效编码与卓越性能
【8月更文挑战第31天】Xamarin 与 .NET 的结合为开发者提供了强大的平台,用于构建现代化移动应用。通过 C# 和 .NET 框架,Xamarin 可以实现一次编写、多平台运行,覆盖 iOS、Android 和 Windows。这种方式不仅节省了开发时间和成本,还保证了应用的一致性和高质量。Xamarin 是一个开源框架,专为跨平台移动应用开发设计,允许使用 C# 语言和 .NET 核心库构建原生应用,并访问各平台特定功能。微软维护的 Xamarin 是 Visual Studio 生态系统的一部分,极大地提高了开发效率。
27 0
下一篇
DDNS