JasperAssistant는 JasperReports를 위한 Visual Report Designer 중 하나인 상용 툴이다. Eclipse Plugin 형태로 제공되며 직관적인 Graphical한 인터페이스로
jrxml 파일 작성을 용이하게 도와준다.
실제로 Anyframe 기반의 Sample Application인 eMarketSystem 내에 JasperReports를 활용한 예제를 구현해놓았다. 여기서는 그 예제를 어떻게
작성하였는지에 대해서 설명할 것이다.
eMarketSystem 내에 사용자 목록을 조회하는 부분을 JasperReports를 이용하여 HTML, PDF, Excel, CSV 등 다양한 형태로 Reporting할 수 있다.
JasperAssistant를 이용하여 사용자 목록을 조회하는 Reporting 부분을 jrxml로 작성하고, JasperReports 엔진을 통해서 다양한 UI 형태로 보여주고 있는 것이므로,
먼저 JasperAssistant를 사용하여 jrxml 파일을 작성하는 방법부터 살펴보도록 한다.
만약 JasperAssistant 사용 방법에 대해서 이 예제를 통한 방법이 아닌, 전반적인 사용 방법이 궁금하다면 JasperAssistant 사이트에 올려진
를 참고하도록 한다. 간단한 Report 작성하는 방법을 화면과 설명을 통해 쉽게 알려주고 있으므로 처음 JasperAssistant를 접하게 되는 사용자들에게
도움이 된다.
디자인 파일(JRXML) 작성
위와 같은 목표 결과물을 만들어 내기 위해서는 Database에 저장된 사용자(User)의 목록을 조회하여 다양한 UI로 Reporting 할 수 있도록 jrxml 파일을 작성해야 한다.
여기서 작성된 예제는 아래와 같은 환경에서 테스트되었다. 이 다음 단계를 진행하기 전에 아래 항목들은 모두 개발 환경에 설치되어야 한다.
- Eclipse 3.3.1
- JasperAssistant 3.1.2
- DataBase - HsqlDB 1.8.0.4
(Database로 HsqlDB를 사용하며, 이때 사용되는 사용자(User) DB 테이블도 같이 배포되었다. Anyframe-eMarketplace-3.1.1-SpringMVC-1.5.zip 압축파일 풀고 난 후,
anyframe-sample-services/DATABASE/db 폴더 하위에 runHsqlDB.cmd 파일을 실행시키도록 한다)
Step 1 : Open anyframe-sample-web 프로젝트
샘플로 제공되는 Report 파일은 anyframe-sample-web 프로젝트에 같이 제공되고 있다.
jrxml 파일 및 컴파일된 jasper 파일들은 anyframe-sample-web/src/webapp/WEB-INF/reports 폴더 하위에 위치하고 있다.
anyframe-sample-web 프로젝트를 Eclipse에 Import 시키도록 한다.
만약 아직 Import를 안했다면
JasperReports 설치 매뉴얼
내용 중
Sample Application 설치
부분을 참고하여 Import 하도록 한다.
- Import anyframe-sample-web 프로젝트
- Open anyframe-sample-web 프로젝트
- anyframe-sample-web 프로젝트 하위에 src/webapp/WEB-INF/reports 폴더 확인
Step 2 : Open JasperAssistant Perspective
JasperAssistant는 Report 작성을 위해서 Eclipse Perspective를 제공한다. 이 Perspective은 Report 작성 시 최적의 Eclipse Workbench 레이아웃 및
필요한 모든 뷰를 제공한다.
JasperAssistant Perspective를 열기 위해서는
Window
->
Open Perspective
->
Other...
->
JasperAssistant
메뉴를 선택한다.
Step 3 : Create a new Report
이제 새로운 Report를 작성해보도록 하자. 우선 src/webapp/WEB-INF/reports 폴더에 신규 Report 파일(jrxml)을 생성한다.
아래 화면들은 사용자 목록 조회 Report 파일을 위해서 작업한 내용들이다. 만약 추가적으로 새로운 Report 파일을 작성하고자 한다면 아래 내용을 참고하여
작성하면 된다.
- Select a wizard
- Report wizard를 선택한다. 이때 JasperAssistant Perspective 화면이라면 좌측에 Navigator 뷰가 나타날 것이다.
src/webapp/WEB-INF/reports 폴더를 마우스로 선택한 상태에서 File > New 메뉴를 선택하면 Report 라는 하위 메뉴가 보이게 된다. 이 메뉴를 이용하면 바로 아래 단계로 이동하게 된다.
혹은 File > New > Other... 메뉴를 선택하면 아래 그림과 같은 화면이 나오게 되고, 이때 JasperAssistant > Report wizard를 선택하도록 한다.

- New Report Wizard : Create a new report
- 신규 Report 파일을 생성한다. 이때 파일 확장자를 jrxml으로 작성하도록 한다.
사용자 목록 조회 Report 파일명은 userList.jrxml 로 하도록 하고, anyframe-sample-web/src/webapp/WEB-INF/reports 폴더 하위에 Report 파일이
저장되고 있음을 확인한다.

- New Report Wizard : Select a data source
- Report에 사용될 Data가 저장된 data source를 선택한다. Preferences 항목에 정의된 Data Source들이 목록으로 보여진다.
제공되는 샘플은 HSQL DB를 사용하므로 목록 중에 HSQL DB를 선택하도록 한다. Data Source를 추가하고자 하면, Window ->Preferences ->JasperAssistant ->Data Source 메뉴에서
추가하면 된다.

- New Report Wizard : Specify the SQL query
- Report에 사용될 Data를 얻어오는 SQL 쿼리를 작성한다.
사용자 목록을 조회하여 보여줄 Report를 작성할 것이므로 SQL 쿼리에 select * from users를 입력하도록 한다.

- New Report Wizard : Select the Fields
- Report에 사용될 Field를 선택한다.
DB로부터 얻어온 USERS DB Table의 컬럼의 종류는 여러가지가 있지만 Report 결과로 보여질 컬럼, 즉 Field 정보로 사용될 컬럼들은
총 6가지 정보(CELL_PHONE, EMAIL, SSN, USER_ID, USER_NAME, AGE)이므로 선택하도록 한다.

신규 Report 파일(jrxml) 생성 작업이 완료되었다. 아래 단계를 통해서 디자인 작업을 계속 진행하도록 한다.
Step 4 : Design a report using Palette
Step 3에서 생성한 Report 파일을 JasperAssistant Editor를 이용하여 Open하면, 우측에 Design/Preview Tab과 Palette가 나타난다.
이 Palette 상의 Elements와 Text Fields들을 이용하여 Report 파일을 디자인한다.
우선 Report XML 파일의 구조을 살펴보도록 한다.
Report 파일은 section으로 구성되어 있는데 Section이란 height 별로 각각에 고유한 이름을 가지고 일정한 영역을 가지는 Report 파일의
화면을 나누는 개념이다. Section은 Band라는 이름으로 불리우는데 현재 JasperReports 사용 시 혼용해서 사용되고 있다. 현재 JasperAssistant Editor 메뉴 상에서 사용되는 이름은
Band이므로 앞으로는 Band라고 통일해서 부르도록 한다.
Band는 가로방향으로 나뉘어 각각에 고유의 이름이 명명된 일정한 영역을 뜻한다. 아래 그림은 Band 구조를 보여주고있다.
기본적으로 Title, Last Page Footer, Summary Band를 제외한 나머지 Band들은 Detail Band를 기준으로 상하로(Header와 Footer)
구분되어 짝을 이루고 있고, 각각의 Band는 고유의 목적(기능)이 있다.
| Band 명 |
설명 |
| Background band |
보고서의 배경 설정을 할 수 있다. |
| Title band |
가장 먼저 보여주는 band로 보고서 전체 페이지중 단 한번만 출력된다. 주로
보고서의 Title을 기재하는데 사용된다. |
| Page header band |
한번 정의되면 보고서 전체 페이지의 헤더 부분에 똑같은 위치와 크기로 페이지마다 반복 출력 된다. |
| Page footer band |
한번 정의되면 보고서 전체 페이지의 하단 부분에 똑같은 위치와 크기로 페이지마다 반복 출력 된다. |
| Column header band |
각 Detail band의 column 항목의 상단 영역으로 사용된다. 이 영역 역시 페이지마다 출력 된다. |
| Column footer band |
각 Detail band의 column 항목의 하단 영역으로 사용된다. 이 영역 역시 페이지마다 출력 된다. |
| Group header band |
사용자가 임의로 만든 band로 0개 이상을 만들수 있다. Detail band 상단에 위치한다. |
| Group footer band |
사용자가 임의로 만든 band로 0개 이상을 만들수 있다. Detail band 하단에 위치한다. |
| Detail band |
가장 핵심이 되는 band이다. Detail Band는 주로 실제 Query 를 이용해 수집된 데이터들을 나열해
출력할 수 있도록 하는 Band로 모든 Band들이 Detail Band를 중심으로 구성되고 설계된다고 해도 과언이 아니다.
여기서 Query를 이용해 수집된 데이터는 Detail Band 뿐만 아니라 다른 Band 에서도 사용할 수 있지만,
Detail Band와 틀린 점은 Detail Band에서는 수집된 한 개 이상의 모든 Rows를 출력할 수 있지만 Detail Band를 제외한
다른 Band 에서는 첫 번째 Row에 있는 Column 값들만 출력할 수 있다. |
| Last Page Footer |
다른 일반 Page footer와 달리 보고서의 맨 마지막 페이지에 특별한 결과를 나타내고자 할 때
사용하는 Band로 Title Band처럼 보고서 전체 페이지중 딱 한번만 출력할 수 있다. |
| Summary band |
Report footer Band라고도 하며 보고서 전체 페이지중 맨 마지막 페이지에 출력되는 Band로 주로 총 합계 등을 나타내고자 할 때 사용한다. |
샘플 예제인 사용자 목록 조회 Report 파일은 Title, Page Header, Detail, Summary band를 사용하여 작성되었다.
userList.jrxml 파일을 신규 생성하면, Default로 Detail band만 존재한다. 그러므로 추가되는 band는 Add Band 메뉴를 이용하여 추가시키도록 한다.
- Title band
작성
userList.jrxml 파일이 Open되었을때 좌측에 Outline 뷰에서 루트 항목(기본적으로 Unnamed라고 표기됨)을 선택 후 마우스 우측 버튼을 클릭하여
Add Band > Add Title band 메뉴를 선택하도록 한다. 또는 Editor에서 점(dot)가 찍혀있는 않은 상하좌우 공란을 선택한 후 마우스 우측 버튼을 클릭하면 Add Band 메뉴를 사용할 수 있다.
우측 Editor 화면에 Title band가 생성되고 Palette의 Elements 항목 중 Static Text를 드래그앤드롭 하여
Title band 위에 놓는다.
Static Text Element의 Properties 항목 중 Static Text > Text Property의 Value에
User List (사용자 목록) 라고 입력해 넣는다.
또한 Reporting 시 보기 좋게 하기 위해서 아래와 같이 Property의 Value를 설정하도록 한다.
| Property |
Value |
설명 |
| Static Text > Text |
User List (사용자 목록) |
타이틀 명 |
| Text Font > Font Size |
24 |
타이틀 글자 크기 설정 |
| Text Font > PDF Embedded |
true |
PDF 형태로 Reporting 하는 경우 한글 지원하기 위해 설정 |
| Text Font > PDF Encoding |
UniKS-UCS2-H |
PDF 형태로 Reporting 하는 경우 한글 지원하기 위해 설정하는데 글자 배열 방식에 따라 UniKS-UCS2-H(horizontal) 혹은 UniKS-UCS2-V(vertical)를 선택 |
| Text Font > PDF Font Name |
HYGoThic-Medium |
PDF 형태로 Reporting 하는 경우 한글 지원하기 위해 설정하며, 이때 다른 글자체 선택 가능함 |
Editor 기능을 이용하여 Static Text Box의 크기를 크게 하고 글자를 가운데 정렬시켜 놓는다.
이제 타이틀 우측에 JasperReports 로고 이미지를 추가해보도록 한다.
Palette의 Elements 중 Image를 선택하여 드래그앤드롭해 놓는다.
그런 다음, 아래와 같이 Property 설정을 통해 이미지 파일명을 작성한다.
| Property |
Value |
설명 |
| Image > Experssion > Text |
"jasperreports-logo.png" |
이미지 파일명을 작성하는데 실제 이미지 파일이 위치하는 곳은 프로젝트의 클래스패스로 잡힌 WEB-INF/classes 폴더임 |
| Image > Experssion > Value Class |
java.lang.String |
이미지 파일 명 표현 방식 |
위와 같이 Title band 작성한 모습은 아래 그림과 같이 Editor에 표현된다.

- Page Header band
작성
userList.jrxml 파일이 Open되었을때 좌측에 Outline 뷰에서 루트 항목(기본적으로 Unnamed라고 표기됨)을 선택 후 마우스 우측 버튼을 클릭하여
Add Band > Page Header band 메뉴를 선택하도록 한다.
그런 다음 Palette의 Elements 중 Static Text 항목을 드래그앤드롭하여 User Id, User NAME, SSN, CellPhone No., EMail 이라는 헤더 정보를 작성한다.
이 하위에 실제 사용자 목록이 해당 필드에 맞게 Reporting 될 것이다. Editor의 툴바에서 제공하는 기능을 이용하여 굵은 글씨로 변경시키고,
테두리 선(Toggle Border 기능 사용)을 만들도록 한다.
작성하고 나면 다음과 같이 페이지 헤더 부분이 완성된 것을 확인할 수 있다.

- Detail band
작성
Default로 생성되는 band이므로 새로 band를 추가할 필요 없다.
userList.jrxml 파일이 Open되었을때 좌측에 Outline 뷰에서 루트 항목(기본적으로 Unnamed라고 표기됨) 하위의 Fields 항목을
열어보면 위 Step 3에서 선택했던 Field들이 나온다.
이 Field들을 드래그앤드롭하여 Detail band 영역으로 가지고 오면 아래와 같이 $F{필드명} 형태로 보이게 된다.
실제 Data Source로부터 데이터를 받아와서 이 위치에 Reporting 하게 된다.
테두리 선 등 필요한 작업을 Editor의 툴바 기능을 이용해서 수행한다.

Text Field 입력 란 박스의 Padding 값을 설정하기 위한 Property 설명과 해당 화면이다.
| Property |
Value |
설명 |
| Text > Box |
(2,2,2,2) : 직접 입력 불가능 |
우측의 버튼을 클릭하면 아래와 같이 설정할 수 있는 팝업창이 나온다. |
Box Settings 팝업창에서 Padding 항목을 수정해주면 된다.
여기서는 Shared padding settings 항목을 선택하고 Padding 값을 2 px로 주었다.

- Summary band
작성
userList.jrxml 파일이 Open되었을때 좌측에 Outline 뷰에서 루트 항목(기본적으로 Unnamed라고 표기됨)을 선택 후 마우스 우측 버튼을 클릭하여
Add Band > Summary band 메뉴를 선택하도록 한다.
이 Summary band 영역에는 파이 차트를 추가해넣는다.
우측에서 Palette의 Elements 중 Chart를 클릭한 후 band 영역을 다시 클릭한다.
그러면 다음과 같이 어떤 타입의 차트를 선택할 지 묻는 팝업창이 나온다. 여기서 Pie를 선택하도록 한다.
만약 클릭으로 Chart를 선택하지 않고 위에서처럼 드래그앤드롭 형태로 Chart를 갖고 오면 Default로 Area 타입의 차트가 적용된다.
그러므로 차트 타입을 선택하기 위해서는 클릭으로 Chart Element를 선택하도록 한다.

좌측에 Outline 뷰에서 루트 항목(기본적으로 Unnamed라고 표기됨)하위의 Summary > Chart_숫자 > Pie Dataset 항목을 선택하면
Properties 뷰에서 Dataset에 대한 설정을 할 수 있다.
| Property |
Value |
설명 |
| Pie Dataset > Key Expression |
$F{USER_ID} |
파이 차트 작성 시 키가 되는 필드 정보를 입력 |
| Pie Dataset > Value Expression |
$F{AGE} |
Number 형 데이터로 변경 가능한 데이터 필드 정보만 입력 가능함 |
| Pie Dataset > Label Expression |
|
공란으로 두면 기본적으로 Key = Value 형태로 디스플레이됨 |
좌측에 Outline 뷰에서 루트 항목(기본적으로 Unnamed라고 표기됨)하위의 Summary > Chart_숫자 항목을 선택한 후
Properties 뷰에서 Mode를 변경시켜 준다.
| Property |
Value |
설명 |
| Common > Mode |
Opaque |
파이 차트를 HTML로 Reporting 시 Mode를 Transparent로 하면
차트 이미지 주위로 불필요한 바탕색이 생기므로 이를 없애기 위해서 Opaque를 선택함
PDF, Excel 등 타 Reporting 형태일 경우에는 상관없음
|

파이 차트 작성까지 모두 끝내고 나서 Editor 상의 Design Tab을 통해 보면 다음과 같은 모습으로 보인다.
Preview Tab으로 이동하지 않으면 파이 차트 상에 데이터가 들어가 있는 형태를 볼 수 없으며, 에러 발생 시에도 확인이 불가능하므로
Design Tab에서의 작업이 모두 끝나면 다음 단계인 Preview 를 진행시킨다.

Step 5 : Preview Report
디자인 Report 파일 작성이 모두 완료되었다면 JasperAssistant에서 제공되는 Preview 기능을 사용하여 제대로 작성되었는지를 확인해본다.
만약 Report 파일에 에러가 존재한다면 Preview 기능을 수행시킬 때 확인해볼 수 있을 것이다.
Preview 결과가 이 매뉴얼 상단의 목표 결과물과 동일한지 확인해본다.
이로써 JasperAssistant를 활용한 jrxml 파일 작성이 완료되었다. 이제 샘플 웹 어플리케이션에서 해당 Reporting 파일을 어떻게 호출해서
보여주는지 확인해본다.