水晶报表

来源:互联网 发布:爱玩图淘宝u站 编辑:程序博客网 时间:2024/06/10 02:44


在WinForm中使用水晶报表
使用crystalReportViewer控件
  private void button1_Click(object sender, System.EventArgs e)
  {
   OpenFileDialog dlg=new OpenFileDialog();
   dlg.Title="打开水晶报表文件";
   dlg.Filter="水晶表报文件(*.rpt)|*.rpt|所有文件|*.*";
   if(dlg.ShowDialog()==DialogResult.OK){
    crystalReportViewer1.ReportSource=dlg.FileName;
   }
  }

Web中载入水晶报表

  private void Page_Load(object sender, System.EventArgs e)
  {
   if(Session["filename"]!=null)
    CrystalReportViewer2.ReportSource = Session["filename"].ToString();
  }
  private void btnLoad_Click(object sender, System.EventArgs e)
  {
   string strName = File1.PostedFile.FileName;
   if(strName.Trim()!="")
   {
    CrystalReportViewer2.ReportSource = strName;
    Session["filename"] = strName;
   }
  }

Pull方法
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
  ReportDocument ReportDoc;
  private void Page_Load(object sender, System.EventArgs e)
  {
   ReportDoc  = new  ReportDocument();
   ReportDoc.Load(Server.MapPath("myReport.rpt"));
      #region 解决登录错误问题
   TableLogOnInfo  logonInfo  = new TableLogOnInfo();
   foreach( CrystalDecisions.CrystalReports.Engine.Table tb in ReportDoc.Database.Tables)
   {
    logonInfo = tb.LogOnInfo;
    logonInfo.ConnectionInfo.ServerName = "(local)";
    logonInfo.ConnectionInfo.DatabaseName = "myDatabase";
    logonInfo.ConnectionInfo.UserID = "sa";
    logonInfo.ConnectionInfo.Password = "111";
    tb.ApplyLogOnInfo(logonInfo); 
   }
   #endregion
   CrystalReportViewer1.ReportSource = ReportDoc;
  }

Push方法

using System.IO;
using System.Data.SqlClient;
using UseCrystal.CrystalPush;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
  myReport ReportDoc = new myReport();
  private void Page_Load(object sender, System.EventArgs e)
  {//载入报表
   string strProvider = "Server=(local);DataBase=myDatabase;UID=sa;PWD=111";
   SqlConnection MyConn = new SqlConnection(strProvider);
   MyConn.Open();
   string strSel = "Select * from SaleOfCuntry";
   SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
   DataSet1 ds = new DataSet1();
   MyAdapter.Fill(ds,"SaleOfCuntry");
   ReportDoc.SetDataSource(ds);
   Crv.ReportSource = ReportDoc;
  }
  private void btnExport_Click(object sender, System.EventArgs e)
  {//导出
   CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new   CrystalDecisions.Shared.DiskFileDestinationOptions();
   ReportDoc.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
   switch (ddlFormat.SelectedItem.Text)
   {
    case "Rich Text (RTF)":
       ReportDoc.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.RichText;//
       DiskOpts.DiskFileName = "c://Output.rtf";//
     break;
    case "Portable Document (PDF)":
       ReportDoc.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;//
       DiskOpts.DiskFileName = "c://Output.pdf";//
     break;
    case "MS Word (DOC)":
       ReportDoc.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.WordForWindows;//
       DiskOpts.DiskFileName = "c://Output.doc";//
     break;
    case "MS Excel (XLS)":
       ReportDoc.ExportOptions.ExportFormatType =   CrystalDecisions.Shared.ExportFormatType.Excel;//
       DiskOpts.DiskFileName = "c://Output.xls";//
     break;
    default:
     break;
   }
   ReportDoc.ExportOptions.DestinationOptions = DiskOpts;
    ReportDoc.Export();
  }
  private void btnPrint_Click(object sender, System.EventArgs e)
  {//打印
   // 指定打印机名称,这里是网络工作站Gigi上的打印机Hp Jet 6    
   string strPrinterName;
   strPrinterName = @"Canon Bubble-Jet BJC-210SP";
   // 设置打印页边距
   PageMargins margins;
   margins = ReportDoc.PrintOptions.PageMargins;
   margins.bottomMargin = 250;
   margins.leftMargin = 350;
   margins.rightMargin = 350;
   margins.topMargin = 450;    
   ReportDoc.PrintOptions.ApplyPageMargins(margins);    
   //应用打印机名称
   ReportDoc.PrintOptions.PrinterName = strPrinterName;    
   // 打印    // 打印报表。将 startPageN 和 endPageN
   // 参数设置为 0 表示打印所有页。
   ReportDoc.PrintToPrinter(1, false,0,0);    
  }

主从报表
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine ;
myReport ReportDoc = new myReport();
  private void Page_Load(object sender, System.EventArgs e)
  {
   string strProvider = "Server=(local);DataBase=Northwind;UID=sa;PWD=111";
   SqlConnection MyConn = new SqlConnection(strProvider);
   MyConn.Open();
   string strSelOrders = "Select * from orders";
   string strSelOrdersDetails = "Select * from [Order Details]";
   SqlDataAdapter daOrder = new SqlDataAdapter(strSelOrders,MyConn);
   SqlDataAdapter daOrderDetails = new SqlDataAdapter(strSelOrdersDetails,MyConn);
   DataSet ds = new DataSet();
   daOrder.Fill(ds,"orders");
   daOrderDetails.Fill(ds,"Order Details");   
   ReportDoc.SetDataSource(ds);
   cRV.ReportSource = ReportDoc;

  }
private void btnChangeText_Click(object sender, System.EventArgs e)
  {//修改表头
   TextObject tb = (TextObject )ReportDoc.ReportDefinition.ReportObjects["Text2"];
   tb.Text = "订单号";
  }