我搜索了vs.net2003的帮助看到水晶报表的导出代码,可惜是vb的看不懂,哪位高手帮我把他转换成C#语言。或者提供别的更好的导出水晶报表的C#源码更好。
[Visual Basic] 
' 定义 Crystal Reports 变量
Dim crReportDocument As ReportDocument
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
Dim Fname as String' 以下代码可以直接放在窗体的构造函数中对 
'  InitializeComponent() 的调用之后,或者放在 ,
'  Button_Click 事件内部,在该事件中,客户端使用该按钮
'  来获取报表的可打印副本。crReportDocument = New ReportDocument()
' 以下代码行加载 
'  示例报表“Chart.rpt”
crReportDocument.Load ("C:\Program Files\Microsoft Visual Studio .NET 2003\Crystal Reports\Samples\Reports\Feature Examples\Chart.rpt")Fname = "c:\exports\" & Session.SessionID.ToString & ".pdf"
crDiskFileDestinationOptions = New DiskFileDestinationOptions()
CrDiskFileDestinationOptions.DiskFileName = Fname
crExportOptions = crReportDocument.ExportOptions
With crExportOptions
   .DestinationOptions = crDiskFileDestinationOptions
   .ExportDestinationType = ExportDestinationType.DiskFile
   .ExportFormatType = ExportFormatType.PortableDocFormat
End With
crReportDocument.Export()
' 以下代码将 pdf 文件写入 
'  客户端浏览器。
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.WriteFile(Fname)
Response.Flush()
Response.Close()' 从磁盘删除导出的文件
System.IO.File.Delete(Fname)

解决方案 »

  1.   

    这个是用C#写的: rptRSHT_RYMD m_rptRSHT_RYMD = new rptRSHT_RYMD(); //生成报表实例
    m_rptRSHT_RYMD.SetDataSource(DS); //DS是传递给报表的数据源 ExportOptions crExportOptions = new ExportOptions();
    DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();
    String Fname1,Filename,Filepath; Filepath= Server.MapPath("")+"\\";
    Filename="temp";
    Fname1 = Filepath + Filename+".pdf"; crDiskFileDestinationOptions.DiskFileName =Fname1;
    crExportOptions = m_rptRSHT_RYMD.ExportOptions;  crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
    m_rptRSHT_RYMD.Export(); Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType ="application/pdf";
    Response.WriteFile(Fname1);
    Response.Flush();
    Response.Close();

    System.IO.File.Delete(Fname1);
      

  2.   

    private ReportDocument rDoc = new Reports();//你设计的水晶报表
    rDoc.SetDataSource(“tablename”);
    rDoc.Refresh();
    CrystalReportViewer.ReportSource = rDoc;
    rDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
    rDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
    diskOpts.DiskFileName = Server.MapPath("./Temp.pdf");//fileName;
    rDoc.ExportOptions.DestinationOptions = diskOpts;
    rDoc.Export();
    Response.ContentType ="application/pdf";
    Response.AppendHeader("Content-Disposition","attachment; filename=Temp.pdf;");
    Response.WriteFile("./Temp.pdf");
    Response.Flush();
    Response.End();
      

  3.   

    http://www.businessobjects.com/products/dev_zone/net/downloads.asp?ref=devzone_netzone_nav
      

  4.   

    下面代码把datagrid生成了word文档,并在ie显示
    //生成
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=RoadRepair.doc");
    Response.ContentType = "application/vnd.ms-word"  ;//指定生成文件的类型
    HttpContext.Current.Response.Charset = "";
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
    System.IO.StringWriter tw=new  System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw=new System.Web.UI.HtmlTextWriter(tw)
    DataGrid1.RenderControl(hw);//datagrid转成string
    HttpContext.Current.Response.Write(hw.tosting());
    HttpContext.Current.Response.End();//显示
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType="application/msword";
    Response.WriteFile("RoadRepair.doc");
    Response.Flush();
    Response.Close();