导出:
//********************************************
//
//File Name:     WebExportReport.sln
//Created:       May 17, 2002
//Author ID:     CHO
//Purpose:       This sample application demonstrates how to export your report
//               to the following formats:
//
//               - Rich Text Format (RTF)
//               - Microsoft Word Format (DOC)
//               - Portable Document Format (PDF)
//               - Microsoft Excel (XLS)
//               - Crystal Report (RPT)
//               - HTML 3.2 (HTML)
//               - HTML 4.0 (DHTML) 
//
//********************************************

using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Data.OleDb;

namespace WebExportReport
{
 /// <summary>
 /// Summary description for WebForm1.
 /// </summary>
 public class WebForm1 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Button Button1;
  protected System.Web.UI.WebControls.DropDownList DropDownList1;
     protected DataSet dataSet = new DataSet();
  // CR Variables
  ReportDocument crReportDocument;
  ExportOptions crExportOptions;
  protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer2;
  DiskFileDestinationOptions crDiskFileDestinationOptions;

  private void Page_Load(object sender, System.EventArgs e)
  {
  }

  private void initDataSet()
  {
   string querySql ="select * from tblLotTrack where lot< 535120 and stn < 5000 ";              
   OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\LTS2005.mdb");
   cn.Open();                                                           
   OleDbDataAdapter adapter = new OleDbDataAdapter(querySql,cn);         
   adapter.SelectCommand = new OleDbCommand(querySql, cn);              
   adapter.Fill(dataSet);                                                
  }
  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: This call is required by the ASP.NET Web Form Designer.
   //
   InitializeComponent();
   base.OnInit(e);
            initDataSet();

   //Create an instance of the strongly-typed report object
   crReportDocument = new CrystalReport1();
            crReportDocument.SetDataSource(dataSet);
   CrystalReportViewer2.ReportSource = crReportDocument;

   // *******************************************
   // Initialize Dropdownlist for Format types
   // *******************************************
            DropDownList1.Items.Add("");
            DropDownList1.Items.Add("Rich Text (RTF)");
            DropDownList1.Items.Add("Portable Document (PDF)");
            DropDownList1.Items.Add("MS Word (DOC)");
            DropDownList1.Items.Add("MS Excel (XLS)");
            DropDownList1.Items.Add("Crystal Report (RPT)");
            DropDownList1.Items.Add("HTML 3.2 (HTML)");
            DropDownList1.Items.Add("HTML 4.0 (HTML)");
  }
  
  /// <summary>
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button1.Click += new System.EventHandler(this.Button1_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void ExportReport()
  {
   // This subroutine uses a case statement to determine the selected export format from the dropdownlist
   // menu and then sets the appropriate export options for the selected export format.  The report is
   // exported to a subdirectory called "Exported".

   // ********************************
   //Check to see if the application directory has a subdirectory called "Exported".
   //If not, create the directory since exported files will be placed here.
   //This uses the Directory class of the System.IO namespace.
   string ExportPath;
   ExportPath = Request.PhysicalApplicationPath + "Exported\\";
   if (Directory.Exists(ExportPath) == false) Directory.CreateDirectory(Request.PhysicalApplicationPath + "Exported\\");

   // ********************************
   // First we must create a new instance of the diskfiledestinationoptions class and
   // set variable called crExportOptions to the exportoptions class of the reportdocument.
   crDiskFileDestinationOptions = new DiskFileDestinationOptions();
   crExportOptions = crReportDocument.ExportOptions;


   //Find the export type specified in the dropdownlist and export the report. The possible export format
   //types are Rich Text(RTF), Portable Document (PDF), MS Word (DOC), MS Excel (XLS), Crystal Report (RPT),
   //HTML 3.2 (HTML) and HTML 4.0 (HTML)
   //
   //Though not used in this sample application, there are options that can be specified for various format types.
   //When exporting to Rich Text, Word, or PDF, you can use the PdfRtfWordFormatOptions class to specify the
   //first page, last page or page range to be exported.
   //When exporting to Excel, you can use the ExcelFormatOptions class to specify export properties such as
   //the column width etc.

   if (DropDownList1.SelectedItem.Text == "Rich Text (RTF)")
   {
    //--------------------------------------------------------------------
    //Export to RTF.

    //append a filename to the export path and set this file as the filename property for
    //the DestinationOptions class
    crDiskFileDestinationOptions.DiskFileName = ExportPath + "RichTextFormat.rtf";

    //set the required report ExportOptions properties
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.RichText;
    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;

    //--------------------------------------------------------------------
   }
   else if (DropDownList1.SelectedItem.Text == "Portable Document (PDF)")
   {
    //--------------------------------------------------------------------
    //Export to PDF


    //append a filename to the export path and set this file as the filename property for
    //the DestinationOptions class
    crDiskFileDestinationOptions.DiskFileName = ExportPath + "PortableDoc.pdf";

    //set the required report ExportOptions properties
    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

    //--------------------------------------------------------------------
   }
   else if (DropDownList1.SelectedItem.Text == "MS Word (DOC)")
   {
    //--------------------------------------------------------------------
    //Export to Word


    //append a filename to the export path and set this file as the filename property for
    //the DestinationOptions class
    crDiskFileDestinationOptions.DiskFileName = ExportPath + "Word.doc";

    //set the required report ExportOptions properties
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.WordForWindows;
    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
                            
    //--------------------------------------------------------------------
   }
   else if (DropDownList1.SelectedItem.Text == "MS Excel (XLS)")
   {
    //--------------------------------------------------------------------
    //Export to Excel

    //append a filename to the export path and set this file as the filename property for
    //the DestinationOptions class
    crDiskFileDestinationOptions.DiskFileName = ExportPath + "Excel.xls";

    //set the required report ExportOptions properties
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.Excel;
    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
                            
    //--------------------------------------------------------------------
   }
   else if (DropDownList1.SelectedItem.Text == "Crystal Report (RPT)")
   {
    //--------------------------------------------------------------------
    //Export to Crystal reports:

    //append a filename to the export path and set this file as the filename property for
    //the DestinationOptions class
    crDiskFileDestinationOptions.DiskFileName = ExportPath + "Report.rpt";

    //set the required report ExportOptions properties
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.CrystalReport;
    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
                            
    //--------------------------------------------------------------------
   }
   else if (DropDownList1.SelectedItem.Text == "HTML 3.2 (HTML)")
   {
    //--------------------------------------------------------------------
    //Export to HTML32:

    HTMLFormatOptions HTML32Formatopts = new HTMLFormatOptions();

    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.HTML32;

    HTML32Formatopts.HTMLBaseFolderName = ExportPath + "Html32Folder"; //Foldername to place HTML files
    HTML32Formatopts.HTMLFileName = "HTML32.html";
    HTML32Formatopts.HTMLEnableSeparatedPages = false;
    HTML32Formatopts.HTMLHasPageNavigator = false;

    crExportOptions.FormatOptions = HTML32Formatopts;
    //--------------------------------------------------------------------
   }
   else if (DropDownList1.SelectedItem.Text == "HTML 4.0 (HTML)")
   {
    //--------------------------------------------------------------------
    //Export to Html 4.0:

    HTMLFormatOptions HTML40Formatopts = new HTMLFormatOptions();

    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.HTML40;

    HTML40Formatopts.HTMLBaseFolderName = ExportPath + "Html40Folder"; // Foldername to place HTML files
    HTML40Formatopts.HTMLFileName = "HTML40.html";
    HTML40Formatopts.HTMLEnableSeparatedPages = true;
    HTML40Formatopts.HTMLHasPageNavigator = true;
    HTML40Formatopts.FirstPageNumber = 1;
    HTML40Formatopts.LastPageNumber = 3;

    crExportOptions.FormatOptions = HTML40Formatopts;
   } //export format

   //Once the export options have been set for the report, the report can be exported. The Export command
   //does not take any arguments
   try
   {
    // Export the report
    crReportDocument.Export();
   }
   catch (Exception err)
   {
    Response.Write("<BR>");
    Response.Write(err.Message.ToString());
   }
  }
    
  private void Button1_Click(object sender, System.EventArgs e)
  {
   //Clicking on the "Export Report" button will run the ExportReport subroutine and export the report based on the
   //selected format from the dropdownlist.
   ExportReport();
  }
 }
}