2016. 9. 25. 17:25

프린터로 내용 출력하는 방법에 대해 다룹니다.


예시는 visualstudio 2015 Community edition 을 사용 합니다.

설치 시 SQL Server Data Tools 항목이 체크되어 있어야 합니다. 컨트롤이 보이지 않으면 프로그램 추가/제거 에서 변경을 누른다음 체크 하여 추가하도록 합니다.



도구상자 에서 ReportViewer 컨트롤을 폼에 추가 합니다.



새 항목 추가 - 데이터 집합 추가



데이터 집합 -> 추가 - DataTable



테이블 생성

테이블 명을 지정하고, Ctrl+L 을 눌러 컬럼을 하나씩 추가합니다. (Ctrl+L 누를때마다 컬럼이 하나씩 늘어납니다)



레포트 생성

새 항목 추가 - 보고서



보고서에 테이블 추가

이름은 적당히 알아서 지정하고, 데이터 원본과 데이터 집합은 위에서 생성한 데이터 집합의 내용을 선택합니다.



데이터 집합으로 부터 하나씩 끌어다 각 컬럼에 올립니다.

제목 출력을 위한 매개변수도 하나 추가, 배치 합니다.



작업한 보고서를 컨트롤에 연결

Report Viewer 선택 - 우상단 작은 삼각형 클릭 - 팝업에서 보고서 선택



소스코드

데이터 테이블 넘길때 이름을 위에서 지정한 데이터 집합에 설정한 이름으로 넘깁니다.

제목 파라메터 역시 레포트에서 생성한 파라메터 명칭으로 넘깁니다.

            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Tel");
            dt.Columns.Add("Addr");

            dt.Rows.Add(new object[] { "AAA1", "BBB1", "CCC1" });
            dt.Rows.Add(new object[] { "AAA2", "BBB2", "CCC2" });
            dt.Rows.Add(new object[] { "AAA3", "BBB3", "CCC3" });

            for (int i = 10; i < 100; i++)
            {
                dt.Rows.Add(new object[] {
                    string.Format("AAA{0}", i.ToString())
                    , string.Format("BBB{0}", i.ToString())
                    , string.Format("CCC{0}", i.ToString()) });
            }

            ReportParameter[] rp = new ReportParameter[1];
            rp[0] = new ReportParameter("title", "샘플 보고서 제목");

            reportViewer1.PageCountMode = PageCountMode.Actual;

            ReportDataSource rDS = new ReportDataSource("reportdata", dt);
            this.reportViewer1.LocalReport.DataSources.Clear();
            this.reportViewer1.LocalReport.DataSources.Add(rDS);
            this.reportViewer1.LocalReport.SetParameters(rp);
            this.reportViewer1.LocalReport.Refresh();

            this.reportViewer1.RefreshReport();


빌드 및 실행




테이블이 2페이로 넘어가는 경우, 제목이 보여지지 않습니다.

페이지 마다 테이블 제목을 출력하도록 수정 하도록 하겠습니다.


레포트를 열고 테이블을 선택 합니다.

하단의 고급모드를 선택합니다.



행 그룹 항목의 정적을 클릭 -> 우측 속성에서 RepeatOnNewPage 값을 True 로 설정 합니다.



다시 빌드, 실행 하고 페이지를 넘겨보면 제목이 출력됨을 확인 할 수 있습니다.




본 레포트를 적용하여 개발한 프로그램 소스코드 입니다.

https://github.com/haebi/APTManager






Posted by 해비