반응형

 

C#에서 크리스탈 리포트를 이용한 인쇄

  • 크리스탈 리포트 라이브러리 설치(편집용, 런타임용)
  • 프로젝트에 크리스탈 리포트 참조 추가
  • DataSet생성(DataSet안의 DataTable 하나당 리포트 파일과 대응)
  • 리포트 생성
  • 인쇄하기

 

크리스탈 리포트 라이브러리 설치(편집용, 런타임용)

  • SAP 사이트에서 Visual Studio IDE용 설치파일과 런타임(32, 64) 다운로드 후 설치
  • IDE용 : CRforVS13SP29_xxx.EXE, 런타임용 : CRRuntime_(32/64)bit_xxx.msi
  • 계정이 없으면 간단한 가입 후 다운로드

https://www.sap.com/cmp/td/sap-crystal-reports-visual-studio-trial.html

 

프로젝트에 크리스탈 리포트 참조 추가

 

DataSet생성

  • 리포트 당 대응되는 데이터 테이블 생성

 

리포트 생성 및 DataTable연결, 편집

  • 추가 > 새항목 > Crystal Reports
  • DataTable연결 : 필드 탐색기 > 데이터베이스 필드 > 우클릭 > 데이터베이스 전문가

  • 편집 화면의 우클릭 메뉴에서 고정항목(날짜, 시간 등), 텍스트, 선 등 삽입
  • 선택한 DataTable의 항목 선택하여 삽입
  • 본문 항목은 DataTable의 Row개수만큼 반복해서 출력이 되는 영역임

 

인쇄 Form

using CrystalDecisions.CrystalReports.Engine;
using System.Windows.Forms;

namespace CrystalReportTest {
    public partial class FormPrint :Form {
        public FormPrint() {
            InitializeComponent();
        }

        public void setReportSource(ReportClass report) {
            crystalReportViewer1.ReportSource = report;
        }
    }
}

 

메인 Form

using CrystalReportTest.Print;
using System;
using System.Data;
using System.Windows.Forms;

namespace CrystalReportTest {
    public partial class FormMain :Form {
        public FormMain() {
            InitializeComponent();
        }

        //리스트 형식 인쇄
        private void btnPrintList_Click(object sender, EventArgs e) {
            CrystalReportTestList report = new CrystalReportTestList();

            //이름 상관없이 순서데로임
            DataTable table = new DataSetMain.DataTableTestListReortDataTable();
            for(int i = 0; i < 10; i++) {
                DataRow row = table.NewRow();

                row["col1"] = "col1data" + (i + 1);
                row["col2"] = "col2data" + (i + 1);
                row["col3"] = "col3data" + (i + 1);
                row["col4"] = "col4data" + (i + 1);
                row["col5"] = "col5data" + (i + 1);

                table.Rows.Add(row);
            }

            report.SetDataSource(table);

            FormPrint form = new FormPrint();
            form.setReportSource(report);
            form.ShowDialog();
            form.Dispose();
        }

        //페이지 형식 인쇄
        private void btnPrintPage_Click(object sender, EventArgs e) {
            CrystalReportTestPage report = new CrystalReportTestPage();

            //이름 상관없이 순서데로임
            DataTable table = new DataSetMain.DataTableTestPageReortDataTable();

            DataRow row = table.NewRow();

            row["col1"] = "col1data";
            row["col2"] = "col2data";
            row["col3"] = "col3data";
            row["col4"] = "col4data";
            row["col5"] = "col5data";
            row["col6"] = "col6data";
            row["col7"] = "col7data";
            row["col8"] = "col8data";
            row["col9"] = "col9data";

            table.Rows.Add(row);

            report.SetDataSource(table);

            FormPrint form = new FormPrint();
            form.setReportSource(report);
            form.ShowDialog();
            form.Dispose();
        }
    }
}

 

프로젝트 소스 다운↓

CrystalReportTest.zip
0.30MB

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기