-크리스탈리포트 닷넷을 이용한 웹리포팅 관련 엑셀 출력 및 PDF출력 리포팅 방식을 설명드립니다.

using System;
using System.Data;
using System.Data.SqlClient;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;

namespace JDictionary.Dictionary
{

   /// <summary>
   /// ExportPDFSearch에 대한 요약 설명입니다.
   /// </summary>
   public class ExportPDFSearch : System.Web.UI.Page
   {
       protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;

       private void Page_Load(object sender, System.EventArgs e)
       {
           if(!Page.IsPostBack)
           {
               string SearchOption=Request.QueryString["soption"].ToString();
               string SearchWord=Request.QueryString["sword"].ToString();
               string gubun=Request.QueryString["gubun"].ToString();

               if(gubun=="1")
               {
                   ExportPDF(SearchOption,SearchWord);
               }
               else
               {
                   ExportExcel(SearchOption,SearchWord);
               }
           }
       }

       private string GetDBString()
       {
           return System.Configuration.ConfigurationSettings.AppSettings["DSN"].ToString();
       }

       private void ExportPDF(string SearchOption,string SearchWord)
       {
           ReportDocument crReportDocument = new ReportDocument();
           ExportOptions crExportOptions = new ExportOptions();
           DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();

           SqlConnection conn = new SqlConnection(GetDBString());
           SqlCommand comm = new SqlCommand("up_searchword_export",conn);
           comm.CommandType = CommandType.StoredProcedure;

           SqlParameter param = new SqlParameter();
           param = comm.Parameters.Add("@searchoption", SqlDbType.VarChar,20);
           param.Direction = ParameterDirection.Input;
           param.Value = SearchOption.ToString();
           param = comm.Parameters.Add("@searchword", SqlDbType.VarChar,100);
           param.Direction = ParameterDirection.Input;
           param.Value = SearchWord.ToString();

           SqlDataAdapter adapter = new SqlDataAdapter(comm);
           dsDictionary ds = new dsDictionary();
           adapter.Fill(ds, "up_searchword_export");
           crReportDocument = new rptSearchWordPDF();
           crReportDocument.SetDataSource(ds);

           CrystalReportViewer1.ReportSource = crReportDocument;
           CrystalReportViewer1.SeparatePages = false;
           CrystalReportViewer1.DisplayGroupTree = false;
           CrystalReportViewer1.DisplayToolbar = false;

           string ExportRoot = System.Configuration.ConfigurationSettings.AppSettings["ExportRoot"];
           string Fname = ExportRoot+Session.SessionID.ToString()+".pdf";
           crDiskFileDestinationOptions.DiskFileName = Fname;
           crExportOptions = crReportDocument.ExportOptions;

           crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
           crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
           crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
           crReportDocument.Export();

           //Response.ClearContent();
           //Response.ClearHeaders();
           Response.ContentType = "application/pdf";
           Response.WriteFile(Fname);
           Response.Flush();
           Response.Close();

           System.IO.File.Delete(Fname);
       }

       private void ExportExcel(string SearchOption,string SearchWord)
       {
           ReportDocument crReportDocument = new ReportDocument();
           ExportOptions crExportOptions = new ExportOptions();
           DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();

           SqlConnection conn = new SqlConnection(GetDBString());
           SqlCommand comm = new SqlCommand("up_searchword_export",conn);
           comm.CommandType = CommandType.StoredProcedure;

           SqlParameter param = new SqlParameter();        
           param = comm.Parameters.Add("@searchoption", SqlDbType.VarChar,20);
           param.Direction = ParameterDirection.Input;
           param.Value = SearchOption.ToString();
           param = comm.Parameters.Add("@searchword", SqlDbType.VarChar,100);
           param.Direction = ParameterDirection.Input;
           param.Value = SearchWord.ToString();

           SqlDataAdapter adapter = new SqlDataAdapter(comm);
           dsDictionary ds = new dsDictionary();
           adapter.Fill(ds, "up_searchword_export");

           crReportDocument = new rptSearchWordExcel();
           crReportDocument.SetDataSource(ds);

           CrystalReportViewer1.ReportSource = crReportDocument;
           CrystalReportViewer1.SeparatePages = false;
           CrystalReportViewer1.DisplayGroupTree = false;
           CrystalReportViewer1.DisplayToolbar = false;

           string ExportRoot = System.Configuration.ConfigurationSettings.AppSettings["ExportRoot"];
           string Fname = ExportRoot+Session.SessionID.ToString()+".xls";
           crDiskFileDestinationOptions.DiskFileName = Fname;
           crExportOptions = crReportDocument.ExportOptions;
           crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
           crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
           crExportOptions.ExportFormatType = ExportFormatType.Excel;
           crReportDocument.Export();

           Response.ClearContent();
           Response.ClearHeaders();
           Response.ContentType = "application/vnd.ms-excel";
           Response.WriteFile(Fname);
           Response.Flush();
           Response.Close();

           System.IO.File.Delete(Fname);
       }

       #region Web Form 디자이너에서 생성한 코드
       override protected void OnInit(EventArgs e)
       {
           InitializeComponent();
           base.OnInit(e);
       }
 
       private void InitializeComponent()
       {    
           this.Load += new System.EventHandler(this.Page_Load);
       }
       #endregion
   }
}

출처 : http://cafe.naver.com/82csharp/17

+ Recent posts