请有相关Crystal Report开发经验的朋友指点一下关于Web方式下的水晶报表打印以及导出问题,先谢过了。。

解决方案 »

  1.   

    http://www.yesky.com/20020618/1616445.shtml
    http://www.yesky.com/20020618/1616443.shtml
    http://www.yesky.com/20020618/1616438.shtml
      

  2.   

    安装10.0的,可以用自带的打印,也可以自己编码。
    自写编码:
    在页面添加html的button控件,onclick事件执行下面的函数:
    function print()
               {
                   __doPostBack('crptv:_ctl2:_ctl3','');     //这个放心使用,可以用的(reportViewer是你的报表的名称,根据实际情况改之;
               }
      

  3.   

    using System;
    using CrystalDecisions.Shared;
    using CrystalDecisions.CrystalReports.Engine;
    using System.Web;
    namespace GESoft.FDJ.BusModules.Common.Business
    {
    /// <summary>
    ///------------------------------------------------------------------------
    ///CrystalPrint is used to Export Print and Server Print.It has Static method 
    ///ExportPrint and ServerPrint.
    ///[email protected]
    ///----------------------------write by b0b0 2004-9-14----------------------
    /// </summary>
    //Export Format Enumerator
    public enum ExportFormat
    {
    Word=0,
    PDF=1,
    Excel=2 }
    public class CrystalPrint
    {
    //Export Print 
    /// <summary>
    /// Export word or PDF to print.
    /// </summary>
    /// <param name="reports">what u used ReportsDocument</param>
    /// <param name="page">what u user web form </param>
    /// <param name="exportFormat">what u want export format </param>
    static public void ExportPrint(ref ReportDocument reports,System.Web.UI.Page page,ExportFormat format)
    {
    string strTempDirectory=System.Configuration.ConfigurationSettings.AppSettings["TempDirectory"];
    CrystalDecisions.Shared.ExportOptions myExportsOptions;
    //reports.Load(@"C:\Inetpub\wwwroot\zhxt\PreSellLinence\CRGrantCertificatePrint.rpt");
    myExportsOptions=reports.ExportOptions;
    CrystalDecisions.Shared.DiskFileDestinationOptions myDiskFileOptions;
    myDiskFileOptions=new CrystalDecisions.Shared.DiskFileDestinationOptions();
    string myExportFileName="";
    if(format==ExportFormat.Word)
    {
    myExportsOptions.ExportFormatType=ExportFormatType.WordForWindows;
    myExportFileName=strTempDirectory.Trim()+ page.Session.SessionID.ToString() +".doc" ;
    myDiskFileOptions.DiskFileName=myExportFileName;
    myExportsOptions.DestinationOptions=myDiskFileOptions;
    myExportsOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
    reports.Export();
    page.Response.ClearContent();
    page.Response.ClearHeaders();
    page.Response.ContentType="application/msword";

    }
    //Rewrite a bug that Print PDF Invalible
    //-----b0b0----2004-9-16---------------
    else if(format==ExportFormat.PDF)
    {
    myExportsOptions.ExportFormatType=ExportFormatType.PortableDocFormat;
    myExportFileName=strTempDirectory.Trim()+ page.Session.SessionID.ToString() +".pdf" ;
    myDiskFileOptions.DiskFileName=myExportFileName;
    myExportsOptions.DestinationOptions=myDiskFileOptions;
    myExportsOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
    reports.Export();
    page.Response.ClearContent();
    page.Response.ClearHeaders();
    page.Response.ContentType="application/pdf";
    }
    else if(format==ExportFormat.Excel)
    {
    myExportsOptions.ExportFormatType=ExportFormatType.Excel;
    myExportFileName=strTempDirectory.Trim()+ page.Session.SessionID.ToString() +".xls" ;
    myDiskFileOptions.DiskFileName=myExportFileName;
    myExportsOptions.DestinationOptions=myDiskFileOptions;
    myExportsOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
    reports.Export();
    page.Response.ClearContent();
    page.Response.ClearHeaders();
    page.Response.ContentType="application/msexcel"; }     page.Response.WriteFile(myExportFileName);
    page.Response.Flush();
    page.Response.Close();
    System.IO.File.Delete(myExportFileName);
               
    } /// <summary>
    /// Server Print
    /// </summary>
    /// <param name="reports">What you used ReportDocument</param>
    static public void ServerPrint(ref ReportDocument reports)
    { string strPrinterName=System.Configuration.ConfigurationSettings.AppSettings["ServerPrinter"];
    reports.PrintOptions.PrinterName=strPrinterName.Trim();
    reports.PrintToPrinter(1,true,1,1); } }}
      

  4.   

    http://blog.csdn.net/haibodotnet/category/13322.aspx
      

  5.   

    可以直接调用windows自带的打印.
    在javascript中写:
    window.print()