-크리스탈리포트 닷넷을 이용한 웹리포팅 관련 엑셀 출력 및 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
}
}