.Net用Crystal Report匯出檔案

利用Crystal Report 匯出檔案

  個人使用C#搭配Crystal Report產製Excel或PDF檔,也有六年了吧,近來換公司,由.Net 2003換成
.Net 2005,覺得很多人總對Crystal Report有誤解,認為它不好用,其實,用Crystal Report來產製PDF/Excel檔真的很好用
       我一般是把處理的寫成一個class,去新公司時,把.Net 2005的也寫成一個class,把個人的一些作
法跟大家分享

      實際要匯出時只要幾行,其實一些目錄處理我也都寫成class做,但就不講太多,主要是把Crystal Report的做法跟大家分享
    ReportDocument myDoc = new ReportDocument(); //請引用CrystalDecisions.CrystalReports.Engine  

    myDoc.Load(Rpt的位置);   //看Rpt放在那裡,須讓它Load

    myReport.ChangeReportDataBase(myDoc);
    myReport.SetDocParameter(myDoc, rpt檔中設定的參數名稱,要給參數的值);

    切記..若rpt中沒有傳入參數,千萬別下myDoc.Refresh(),沒傳參數時才可以


---下方是建議包成class----
    public void ChangeReportDataBase(ReportDocument myReport)
    {
        CrystalDecisions.Shared.TableLogOnInfo myLoginInfo = new CrystalDecisions.Shared.TableLogOnInfo();

        foreach (CrystalDecisions.CrystalReports.Engine.Table myTable in myReport.Database.Tables)
        {
           myLoginInfo.ConnectionInfo.ServerName = 建議設在Web.config;

          myLoginInfo.ConnectionInfo.UserID = 建議設在Web.config;
          myLoginInfo.ConnectionInfo.Password = 建議設在Web.config;
          myTable.ApplyLogOnInfo(myLoginInfo);
       }
    }

   ///rpt檔中若有參數時可用 
   public void SetDocParameter(ReportDocument prvDoc, string prvCRParName, string prvCRValue)
    {
        ParameterDiscreteValue DisParameter = new ParameterDiscreteValue();
        ParameterValues prvParameter = new ParameterValues();
        DisParameter.Value = prvCRValue;
        prvParameter.Add(DisParameter);
        prvDoc.DataDefinition.ParameterFields[prvCRParName].ApplyCurrentValues(prvParameter);
    }


    ///匯出pdf檔的做法,excel比照辦理
    public string ExportPdf(ReportDocument prvReport, string prvPath, string prvFileName, string GetTimeToFileName)
    {
        string GetFileName;
        DiskFileDestinationOptions dk = new DiskFileDestinationOptions();

       GetFileName = prvFileName + GetTimeToFileName + ".pdf";
       dk.DiskFileName = prvPath + GetFileName;
       prvReport.ExportOptions.DestinationOptions = dk;
       prvReport.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
       prvReport.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

       try
      {

          prvReport.Export();
          ExecFinal();
      }
      catch
      {
          ExecError(prvPath);
       }

       return GetFileName;
    }

打雜打久了,就變成打雜妹

程式寫久了,就變成老乞丐