zoukankan      html  css  js  c++  java
  • .Net中浏览Crystal Report

    大名鼎鼎的 Crystal Reports(水晶报表)已内嵌为微软 Visual Studio .NET的标准报表工具,同时升级到 Crystal Reports for Visual Studio .NET。它的优点是:1、在 .NET 平台能够轻松创建交互式的、高质量显现的报表内容,这也是 Crystal Reports 长期以来所具有的主要优势;2、使用 Crystal Reports for Visual Studio .NET,可以在 Web 平台和 Windows 平台上承载报表,并将 Crystal 报表作为报表 Web 服务在 Web 服务器上发布;3、利用Crystal Report 创建的Web应用程序,使用户可以深化图表并根据需要筛选信息。在 .NET 中,图表实际上就是一个与应用程序中其他控件进行交互的 Crystal 报表。在这里我向大家介绍如何在 Windows 窗体应用程序中浏览水晶报表。

    设计步骤:

    1、软件环境:要求系统已安装Visual Studio .Net 集成开发系统,仅装有 .Net Framework SDk 不能实现本例效果,成为 .Net Framework SDK 没有水晶报表控件。

    2、新建一个 Visual C# 项目 Windows 应用程序,设置Form1的Text="水晶报表浏览器",StartPosition=CenterScreen //程序开始出现在屏幕中央,其它属性均保持默认;

    3、从工具箱拖入一个CrystalReportViewer,一个Button,一个openFileDialog,到窗体。

    整个设计器的窗体布局只需将button1置于窗体底边中部,不再需要其它多余布局。

    设置crystalReportViewer1的属性如下:


    this.crystalReportViewer1.Dock = System.Windows.Forms.DockStyle.Fill;  
    //停靠方式为充满整个窗体
    //展开+DockPadding
    this.crystalReportViewer1.DockPadding.Bottom = 50; 
     //底部空出放置Button的区域
    this.crystalReportViewer1.DockPadding.Left = 5;  
    this.crystalReportViewer1.DockPadding.Right = 5;
    this.crystalReportViewer1.DockPadding.Top = 5;
    this.crystalReportViewer1.ReportSource = null; 
    //先不载入报表资源



    设置button1的属性如下:


    this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
     //与窗体的下边保持固定
    this.button1.Text = "打开报表";



    openFileDialog1是打开文件的控件,设置其属性如下:


    this.openFileDialog1.Filter 
    = "Crystal Report (*.rpt)|*.rpt|所有文件(*.*)|*.*";  
    //提供打开文件对话框的文件类型,
    默认类型就是此字符串的最前一种定义的类型
    this.openFileDialog1.Title = "打开水晶报表"; 
     //打开文件对话框的标题



    布局效果图如下:



    4、双击button1,添加button1_Click点击事件:


    private void button1_Click(object sender, System.EventArgs e)
    {
    try
    {
    if(openFileDialog1.ShowDialog()==DialogResult.OK)
    this.crystalReportViewer1.ReportSource = @openFileDialog1.FileName;
      //加载水晶报表,将报表文件绑定到CrystalReportView 控件;
                   }
                   catch(Exception error)
                   {
                   MessageBox.Show(error.ToString(),"错误");
                   }
                   }



    5、OK!按Ctrl+F5运行吧。

    可以浏览你系统内现有的报表实例:

    ...\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Samples\Reports\Feature Examples\Chart.rpt



    整个源程序代码如下:


    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    namespace WindowsApplication10
    {
                   /// <summary>
                   /// Form1 的摘要说明。
                   /// </summary>
                   public class Form1 : System.Windows.Forms.Form
                   {
    private CrystalDecisions.Windows.Forms.CrystalReportViewer crystalReportViewer1;
                   private System.Windows.Forms.Button button1;
                   private System.Windows.Forms.OpenFileDialog openFileDialog1;
                   /// <summary>
            /// 必需的设计器变量。
           /// </summary>
                   private System.ComponentModel.Container components = null;
                                   public Form1()
                   {
                   //
          // Windows 窗体设计器支持所必需的
                   //
                   InitializeComponent();
                                   //
                                   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
                                   //
                   }
                   /// <summary>
                   /// 清理所有正在使用的资源。
                   /// </summary>
                   protected override void Dispose( bool disposing )
                   {
                   if( disposing )
                   {
                   if (components != null) 
                   {
                   components.Dispose();
                   }
                   }
    base.Dispose( disposing );
                   }
                   #region Windows Form Designer generated code
                   /// <summary>
                   /// 设计器支持所需的方法 - 不要使用代码编辑器修改
                   /// 此方法的内容。
                   /// </summary>
                   private void InitializeComponent()
                   {
                   this.crystalReportViewer1 = new 
    CrystalDecisions.Windows.Forms.CrystalReportViewer();
                   this.button1 = new System.Windows.Forms.Button();
                   this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
                   this.SuspendLayout();
                   // 
                   // crystalReportViewer1
                   // 
                   this.crystalReportViewer1.ActiveViewIndex = -1;
                   this.crystalReportViewer1.Dock 
    = System.Windows.Forms.DockStyle.Fill;
                   this.crystalReportViewer1.DockPadding.Bottom = 50;
                   this.crystalReportViewer1.DockPadding.Left = 5;
                   this.crystalReportViewer1.DockPadding.Right = 5;
                   this.crystalReportViewer1.DockPadding.Top = 5;
                   this.crystalReportViewer1.Name = "crystalReportViewer1";
                   this.crystalReportViewer1.ReportSource = null;
                   this.crystalReportViewer1.Size = new System.Drawing.Size(292, 273);
                   this.crystalReportViewer1.TabIndex = 0;
                   // 
    // button1
                   // 
             this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
             this.button1.Location = new System.Drawing.Point(104, 240);
                   this.button1.Name = "button1";
                   this.button1.TabIndex = 1;
                   this.button1.Text = "打开报表";
                   this.button1.Click += new System.EventHandler(this.button1_Click);
                   // 
                   // openFileDialog1
                   // 
    this.openFileDialog1.Filter = "Crystal Report (*.rpt)|*.rpt|所有文件(*.*)|*.*";
                   this.openFileDialog1.Title = "打开水晶报表";
                   // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(292, 273);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
     this.button1,
     this.crystalReportViewer1});
    this.Name = "Form1";
    this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    this.Text = "水晶报表浏览器";
    this.ResumeLayout(false);
    }
    #endregion
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    try
    {
    if(openFileDialog1.ShowDialog()==DialogResult.OK)
    this.crystalReportViewer1.ReportSource = @openFileDialog1.FileName;
      //加载水晶报表,将资源报表绑定到水晶报表查看器
                                   }
                                   catch(Exception error)
                                   {
                   MessageBox.Show(error.ToString(),"错误");  //处理异常错误
                   }
                   }
                   }
    }



    事实上,将报表绑定到CrystalReportViewer控件有很多方法。 

    大名鼎鼎的 Crystal Reports(水晶报表)已内嵌为微软 Visual Studio .NET的标准报表工具,同时升级到 Crystal Reports for Visual Studio .NET。它的优点是:1、在 .NET 平台能够轻松创建交互式的、高质量显现的报表内容,这也是 Crystal Reports 长期以来所具有的主要优势;2、使用 Crystal Reports for Visual Studio .NET,可以在 Web 平台和 Windows 平台上承载报表,并将 Crystal 报表作为报表 Web 服务在 Web 服务器上发布;3、利用Crystal Report 创建的Web应用程序,使用户可以深化图表并根据需要筛选信息。在 .NET 中,图表实际上就是一个与应用程序中其他控件进行交互的 Crystal 报表。在这里我向大家介绍如何在 Windows 窗体应用程序中浏览水晶报表。

    设计步骤:

    1
    、软件环境:要求系统已安装Visual Studio .Net 集成开发系统,仅装有 .Net Framework SDk 不能实现本例效果,成为 .Net Framework SDK 没有水晶报表控件。

    2
    、新建一个 Visual C# 项目 Windows 应用程序,设置Form1Text="水晶报表浏览器"StartPosition=CenterScreen //程序开始出现在屏幕中央,其它属性均保持默认;

    3
    、从工具箱拖入一个CrystalReportViewer,一个Button,一个openFileDialog,到窗体。

    整个设计器的窗体布局只需将button1置于窗体底边中部,不再需要其它多余布局。

    设置crystalReportViewer1的属性如下:


    this.crystalReportViewer1.Dock = System.Windows.Forms.DockStyle.Fill;  
    //停靠方式为充满整个窗体
    //展开+DockPadding
    this.crystalReportViewer1.DockPadding.Bottom = 50; 
     //底部空出放置Button的区域
    this.crystalReportViewer1.DockPadding.Left = 5;  
    this.crystalReportViewer1.DockPadding.Right = 5;
    this.crystalReportViewer1.DockPadding.Top = 5;
    this.crystalReportViewer1.ReportSource = null; 
    //先不载入报表资源



    设置button1的属性如下:


    this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
     //与窗体的下边保持固定
    this.button1.Text = "打开报表";



    openFileDialog1
    是打开文件的控件,设置其属性如下:


    this.openFileDialog1.Filter 
    = "Crystal Report (*.rpt)|*.rpt|所有文件(*.*)|*.*";  
    //提供打开文件对话框的文件类型,
    默认类型就是此字符串的最前一种定义的类型
    this.openFileDialog1.Title = "打开水晶报表"; 
     //打开文件对话框的标题



    布局效果图如下:



    4
    、双击button1,添加button1_Click点击事件:


    private void button1_Click(object sender, System.EventArgs e)
    {
    try
    {
    if(openFileDialog1.ShowDialog()==DialogResult.OK)
    this.crystalReportViewer1.ReportSource = @openFileDialog1.FileName;
      //加载水晶报表,将报表文件绑定到CrystalReportView 控件;
                   }
                   catch(Exception error)
                   {
                   MessageBox.Show(error.ToString(),"错误");
                   }
                   }



    5
    OK!按Ctrl+F5运行吧。

    可以浏览你系统内现有的报表实例:

    ...\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Samples\Reports\Feature Examples\Chart.rpt



    整个源程序代码如下:


    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    namespace WindowsApplication10
    {
                   /// <summary>
                   /// Form1 的摘要说明。
                   /// </summary>
                   public class Form1 : System.Windows.Forms.Form
                   {
    private CrystalDecisions.Windows.Forms.CrystalReportViewer crystalReportViewer1;
                   private System.Windows.Forms.Button button1;
                   private System.Windows.Forms.OpenFileDialog openFileDialog1;
                   /// <summary>
            /// 必需的设计器变量。
           /// </summary>
                   private System.ComponentModel.Container components = null;
                                   public Form1()
                   {
                   //
          // Windows 窗体设计器支持所必需的
                   //
                   InitializeComponent();
                                   //
                                   // TODO:  InitializeComponent 调用后添加任何构造函数代码
                                   //
                   }
                   /// <summary>
                   /// 清理所有正在使用的资源。
                   /// </summary>
                   protected override void Dispose( bool disposing )
                   {
                   if( disposing )
                   {
                   if (components != null) 
                   {
                   components.Dispose();
                   }
                   }
    base.Dispose( disposing );
                   }
                   #region Windows Form Designer generated code
                   /// <summary>
                   /// 设计器支持所需的方法 - 不要使用代码编辑器修改
                   /// 此方法的内容。
                   /// </summary>
                   private void InitializeComponent()
                   {
                   this.crystalReportViewer1 = new 
    CrystalDecisions.Windows.Forms.CrystalReportViewer();
                   this.button1 = new System.Windows.Forms.Button();
                   this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
                   this.SuspendLayout();
                   // 
                   // crystalReportViewer1
                   // 
                   this.crystalReportViewer1.ActiveViewIndex = -1;
                   this.crystalReportViewer1.Dock 
    = System.Windows.Forms.DockStyle.Fill;
                   this.crystalReportViewer1.DockPadding.Bottom = 50;
                   this.crystalReportViewer1.DockPadding.Left = 5;
                   this.crystalReportViewer1.DockPadding.Right = 5;
                   this.crystalReportViewer1.DockPadding.Top = 5;
                   this.crystalReportViewer1.Name = "crystalReportViewer1";
                   this.crystalReportViewer1.ReportSource = null;
                   this.crystalReportViewer1.Size = new System.Drawing.Size(292, 273);
                   this.crystalReportViewer1.TabIndex = 0;
                   // 
    // button1
                   // 
             this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
             this.button1.Location = new System.Drawing.Point(104, 240);
                   this.button1.Name = "button1";
                   this.button1.TabIndex = 1;
                   this.button1.Text = "打开报表";
                   this.button1.Click += new System.EventHandler(this.button1_Click);
                   // 
                   // openFileDialog1
                   // 
    this.openFileDialog1.Filter = "Crystal Report (*.rpt)|*.rpt|所有文件(*.*)|*.*";
                   this.openFileDialog1.Title = "打开水晶报表";
                   // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(292, 273);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
     this.button1,
     this.crystalReportViewer1});
    this.Name = "Form1";
    this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    this.Text = "水晶报表浏览器";
    this.ResumeLayout(false);
    }
    #endregion
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    try
    {
    if(openFileDialog1.ShowDialog()==DialogResult.OK)
    this.crystalReportViewer1.ReportSource = @openFileDialog1.FileName;
      //加载水晶报表,将资源报表绑定到水晶报表查看器
                                   }
                                   catch(Exception error)
                                   {
                   MessageBox.Show(error.ToString(),"错误");  //处理异常错误
                   }
                   }
                   }
    }



    事实上,将报表绑定到CrystalReportViewer控件有很多方法。

  • 相关阅读:
    狐狸和兔子
    Arguments to main
    strncpy
    atoi
    sscanf
    集体的智慧:为什么SaaS打败企业软件?
    终于来热风了,又一次感觉到什么叫温暖!
    博士生的毕设
    淡淡的
    endnote如何修改输出格式?
  • 原文地址:https://www.cnblogs.com/jhabb/p/1881431.html
Copyright © 2011-2022 走看看