컴퓨터 활용(한글, 오피스 등)/50_1. 운영체제_윈도우
C# Crystal Report 예제(편집, 인쇄)
3604
2024. 3. 29. 14:05
728x90


C#에서 크리스탈 리포트를 이용한 인쇄
- 크리스탈 리포트 라이브러리 설치(편집용, 런타임용)
- 프로젝트에 크리스탈 리포트 참조 추가
- DataSet생성(DataSet안의 DataTable 하나당 리포트 파일과 대응)
- 리포트 생성
- 인쇄하기
크리스탈 리포트 라이브러리 설치(편집용, 런타임용)
- SAP 사이트에서 Visual Studio IDE용 설치파일과 런타임(32, 64) 다운로드 후 설치
- IDE용 : CRforVS13SP29_xxx.EXE, 런타임용 : CRRuntime_(32/64)bit_xxx.msi
- 계정이 없으면 간단한 가입 후 다운로드

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

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(); |
|
} |
|
} |
|
} |
프로젝트 소스 다운↓↓↓
728x90