7.0 앞부분에 해당하는 메뉴얼 이지만....8.0 에서도 적용할 수 있는 부분이 상당하다.

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

크리스탈 레포트 프로그램에서
메뉴 중 파일 > 프린터 설정 > 방향에서 '가로'를 선택하면 디자인 모습이 가로로 변경된다.

<.NET Source측 제어>
using CrystalDecisions.Shared;    //NameSpace
report.PrintOptions.PaperOrientation = PaperOrientation.Landscape;

* 이래도 안돼면....
프린터 출력하기 직전에 나오는 옵션창의 '기본 설정'에서 용지의 출력방향을 '가로'로 해 주면 된다....^^;;

Crystal Report v10사용시 자동으로 가로출력하기
<출처: 데브피아>

Crystal Report V10을 ASP.Net에서 사용할때 Viewer의 출력버튼을 클릭하였을때 출력 다이얼로그 창이 뜨고 인쇄옵션에서 "가로"항목을 체크해야지만 가로로 출력이 되는데. 인쇄옵션에서 인쇄방향에 대한 항목을 체크하지 않고 자동으로 rpt파일이 출력형태에 따라 가로이면 가로로 세로형태이면 세로에 체크되게.. 즉 그냥 출력 다이얼로그창에서 인쇄버튼만 누르면 해당하는 방향으로 출력하게 해주는 방법입니다.
소스상에서 PaperOrientation.Landscape를 설정하지 않아도 됩니다.

<방법>

우선 크리스탈 레포트 설치시  생성되는 폴더 중에 아래와 같은 경로에
http://pds5.devpia.com/aspnet_lec/1000/564/http://pds5.devpia.com/aspnet_lec/1000/564/crystalprinthost.html이라는 파일의 내용을 일부 수정해주면 됩니다. (수정내용은 첨부된 파일을 살펴보시기 바랍니다.)

경로: C:\Program Files\Common Files\Crystal Decisions\2.5\crystalreportviewers10\html

내용은 다음과 같습니다.

Viewer에서 출력버튼을 클릭하면 http://pds5.devpia.com/aspnet_lec/1000/564/http://pds5.devpia.com/aspnet_lec/1000/564/crystalprinthost.html파일이 ShowModal로 뜨게됩니다.
이때 Viewer페이지에서 rpt파일의 출력정보를 넘겨주는데. http://pds5.devpia.com/aspnet_lec/1000/564/http://pds5.devpia.com/aspnet_lec/1000/564/crystalprinthost.html파일 소스를 확인하니 window.dialogArguments.pageorientation값을 받아서 출력 다이얼로그 창의 가로 출력여부를 설정하는것으로 보입니다.

근데 문제는 Viewer페이지에서 가로출력에 대한 값을 window.dialogArguments.pageorientation변수가 아닌 window.dialogArguments.paperorientation이라는 변수로 넘겨주고 있습니다.값은 rpt 파일을 작성할때 설정(가로출력)을 가져오는듯한데 'Landscape'인것을 확인하였습니다. 하여 첨부한 파일의 소스를 확인하시면 아시겠지만 약간의 소스를 추가하였습니다.  또한 window.dialogArguments.usedefprinter값을 받는 if문은 막아야지 출력 다이얼로그 창에서 유저가 가로출력을 설정하지 않아도 가로로 출력이 가능하게 됩니다.

+ Recent posts