• 水晶报表文件导出方法小结


    近期在做水晶报表时,作者用到了水晶报表文件导出功能。在网上一搜,资料还真多,这些资料不仅多,而且非常的杂乱,让人看得非常不舒服。于是在此将其作了一点汇总和整理,以供大家参考。写的不好,请多包涵。

    命名空间:

    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;

    方法一,利用ReportDocument对象的ExportToDisk方法。

    具体代码为:

    protected void btnExport1_Click(object sender, EventArgs e)
        {
            
    string FileName = Session.SessionID + "." + ddlFileType.SelectedValue;
            
    string FilePath = Request.MapPath("."+ "/ReportFile/".Replace(@"/"@"\"+ FileName;

            ReportDocument Document 
    = new ReportDocument(); 
            
            Document.Load(Server.MapPath(
    "CrystalReport.rpt"));
            Document.SetDataSource(GetReportDataSource()); 
            
            
    this.CrystalReportViewer1.ReportSource = Document;

            
    //设置导出文件格式
            ExportFormatType exprotFormatType = ExportFormatType.NoFormat;
            
    switch (ddlFileType.SelectedValue.ToLower())
            {
                
    case "pdf":
                    exprotFormatType 
    = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
                    
    break;
                
    case "doc":
                    exprotFormatType 
    = CrystalDecisions.Shared.ExportFormatType.WordForWindows;
                    
    break;
                
    case "xls":
                    exprotFormatType 
    = CrystalDecisions.Shared.ExportFormatType.Excel;
                    
    break;
                
    default:
                    
    break;
            }

            
    try
            {
                
    //导出操作
                Document.ExportToDisk(exprotFormatType, FilePath);
                ExportFile(FileName, FilePath);
                System.IO.File.Delete(FilePath);
            }
            
    catch (Exception ex)
            {
                
    string jsError = "alert('" + ex.Message + "');";
                ScriptManager.RegisterStartupScript(
    thisthis.GetType(), "ExportReport", jsError, true);
            }
        }


    protected void ExportFile(string exportFileName, string filePath)
        {
            FileInfo fileInfo 
    = new FileInfo(filePath);
            
    if (fileInfo.Exists == true)
            {
                Response.Clear();
                Response.AddHeader(
    "Content-Disposition""attachment;filename=" + exportFileName);
                Response.AddHeader(
    "Content-Length", fileInfo.Length.ToString());
                Response.AddHeader(
    "Content-Transfer-Encoding""binary");
                Response.ContentType 
    = "application/octet-stream";
                Response.ContentEncoding 
    = System.Text.Encoding.GetEncoding("gb2312");
                Response.WriteFile(fileInfo.FullName);
                Response.Flush();
                Response.End();
            }
        }

    方法二,利用ReportDocument对象的Export方法。

    具体代码如下:

     protected void btnExport2_Click(object sender, EventArgs e)
        {
            
    string FileName = Session.SessionID + "." + ddlFileType.SelectedValue;
            
    string FilePath = Request.MapPath("."+ "/ReportFile/".Replace(@"/"@"\"+ FileName;

            ReportDocument Document 
    = new ReportDocument(); 
            
            Document.Load(Server.MapPath(
    "CrystalReport.rpt"));
            Document.SetDataSource(GetReportDataSource()); 
            
            
    this.CrystalReportViewer1.ReportSource = Document;

            
    //设置导出文件格式
            ExportOptions exportOptions = Document.ExportOptions;
            exportOptions.ExportDestinationType 
    = ExportDestinationType.DiskFile;
            
    switch (ddlFileType.SelectedValue.ToLower())
            {
                
    case "pdf":
                    exportOptions.ExportFormatType 
    = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
                    
    break;
                
    case "doc":
                    exportOptions.ExportFormatType 
    = CrystalDecisions.Shared.ExportFormatType.WordForWindows;
                    
    break;
                
    case "xls":
                    exportOptions.ExportFormatType 
    = CrystalDecisions.Shared.ExportFormatType.Excel;
                    
    break;
                
    default:
                    
    break;
            }

                
            DiskFileDestinationOptions diskFile 
    = new DiskFileDestinationOptions();
           
            diskFile.DiskFileName 
    = FilePath;
            Document.ExportOptions.DestinationOptions 
    = diskFile;

            
    try
            {
                
    //导出操作
                Document.Export();
                ExportFile(FileName, FilePath);
                System.IO.File.Delete(FilePath);
            }
            
    catch (Exception ex)
            {
                
    string jsError = "alert('" + ex.Message + "');";
                ScriptManager.RegisterStartupScript(
    thisthis.GetType(), "ExportReport", jsError, true);
            }
        }

      

    希望此篇梳理性随笔能帮助大家更方便地使用水晶报表文件导出功能。

    文章出处:www.cnblogs.com/jizhong

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。

  • 相关阅读:
    ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
    Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016
    kali linux 2016.1 滚动更新源
    使用you-get下载视频网站视频或其他
    asp.net core开发环境准备
    Python黑客编程基础3网络数据监听和过滤
    debian(kali Linux) 安装net Core
    嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
    Python黑客编程2 入门demo--zip暴力破解
    kali linux Python开发环境初始化
  • 原文地址:https://www.cnblogs.com/jizhong/p/1917939.html
Copyright © 2020-2023  润新知