다른 리포팅 툴에서 옮기기
OZ Report, ClipReport, Crystal Reports, ActiveReports, JasperReports의 밴드·수식·파라미터·하위 보고서를 FreeReport로 옮기는 대응표와 순서, AI·엑셀 붙여 넣기 활용법입니다.
.ozr, .crf, .rpt, .rdlx, .jrxml 파일을 자동으로 바꾸는 변환기는 없습니다. 양식은 디자이너에서 다시 만들거나 JSON으로 작성하며, 보통 양식 하나에 몇 시간 걸립니다. 아래 표는 각 개념이 어디로 가는지 보여 주고, 반복 입력은 AI 도우미와 엑셀·한글 표 붙여 넣기로 크게 줄일 수 있습니다.
국산 툴: OZ Report, ClipReport
왼쪽 이름은 각 제품의 일반적인 개념입니다. 쓰고 있는 버전에 맞춰 확인하세요.
| 개념 | OZ Report | ClipReport | FreeReport |
|---|---|---|---|
| 양식 파일 | .ozr 양식 + .odi 데이터 모듈 | .crf 양식 | JSON 보고서 정의 (파일 하나, 코드와 함께 버전 관리) |
| 밴드 | 타이틀, 페이지 헤더, 데이터 밴드, 그룹 헤더·풋터, 써머리, 페이지 풋터 | 데이터셋별 머리·데이터·꼬리 밴드 | bands.title, pageHeader, columnHeader, groups[].header/footer, detail, summary, pageFooter, noData |
| 데이터 | OZ 서버의 ODI(DB 쿼리) | 리포트 서버의 데이터셋 | 내 API가 주는 JSON: data·fetchData 옵션 또는 REST 연결(definition.data) |
| 필드 | 데이터 연결 라벨 | 데이터 필드 | field 요소의 expr: "name", "customer.name" |
| 파라미터 | 폼·ODI 파라미터 | 리포트 파라미터 | definition.params(문자, 숫자, 날짜, 선택 등)가 뷰어 조회 조건 패널에 나오고 수식에서 params.x로 씀 |
| 뷰어와 인쇄 | OZ 뷰어(HTML5·설치형), 인쇄 모듈 | 뷰어, 인쇄 플러그인 | 브라우저의 createViewer, 용지 크기 그대로 브라우저 인쇄, 무팝업 인쇄가 필요하면 서명된 Windows 프로그램(선택) |
Crystal Reports, ActiveReports, JasperReports
| 개념 | Crystal Reports | ActiveReports | JasperReports | FreeReport |
|---|---|---|---|---|
| 밴드 | Report Header, Page Header, Group Header #n, Details, Group Footer, Report Footer, Page Footer | 섹션 보고서: ReportHeader, PageHeader, GroupHeader, Detail 등 | title, pageHeader, columnHeader, groupHeader/Footer, detail, columnFooter, summary, pageFooter, noData | title, pageHeader, columnHeader, groups[], detail, summary, pageFooter, noData |
| 필드 | {Table.Field} | DataField / =Fields!Name.Value | $F{name} | field 요소, expr "name" |
| 수식 | 수식 필드(Crystal·Basic 문법) | 식, 스크립트 | Java·Groovy 식, 변수 $V{} | 안전한 식 언어 하나: price * qty, iif(), format(), koreanAmount(), 날짜 함수. 스크립트 없음 |
| 합계 | 요약 필드, 누계 | SummaryType / Sum() | calculation·resetType 변수 | sum(amount), sum(amount, 'group' | 'page' | 'report'), count, avg, min, max |
| 파라미터 | {?Param} | Parameters | $P{param} | definition.params → params.param |
| 조건부 표시 | Suppress 수식 | Visible 식 | printWhenExpression | visible: 식, suppressRepeated |
| 하위 보고서 | Subreport | SubReport 컨트롤 | subreport | subreport 요소(definition.subreports 참조, rows: "row.items") 또는 중첩 표 |
| 교차표 | Cross-Tab | Matrix·Tablix | crosstab | crosstab 요소(rowKey, columnKey, value, 합계) |
| 차트 | Chart | Chart | chart (JFreeChart) | chart 요소: 막대, 가로 막대, 선, 영역, 원, 도넛 |
| 내보내기 | PDF, Excel, Word, … | PDF, Excel, Word, … | JRPdfExporter, JRXlsxExporter, … | 브라우저에서: PDF(한글 글꼴 서브셋, AES-256), 엑셀(양식 그대로·데이터), CSV, HWPX, DOCX, PNG. 서버에서는 renderPdf·renderXlsx |
| 인쇄 에이전트 | 런타임의 프린터 설정 | 뷰어·코드에서 인쇄 | JRPrintServiceExporter(서버) | 브라우저 인쇄 창, 또는 Windows 프로그램(선택)의 agent.print(pdf, { printer, copies }) |
옮기는 순서
- 양식 목록 만들기. 양식마다 용지, 밴드, 데이터, 조회 조건, 합계, 하위 보고서, 인쇄 방식(대화 상자, 무팝업, 일괄), 쓰는 내보내기를 적습니다. 가장 많이 출력하는 양식부터 시작하세요.
- 데이터를 JSON으로. 리포트 서버의 쿼리(ODI, 데이터셋, SQL)를 내 API로 옮겨 JSON을 돌려주게 합니다. 머리 부분 값은 최상위 객체({ customer: {…} }), 상세 행은 배열({ items: [...] })입니다. 백엔드 예제를 참고하세요. 백엔드 예제
- 양식 다시 그리기. 비슷한 템플릿에서 시작하거나, 엑셀·한글의 표를 붙여 넣거나, AI 도우미에게 맡긴 뒤 디자이너에서 위치를 다듬습니다. 양식 템플릿
- 수식 옮기기. Crystal의 {Table.Field}, Jasper의 $F{name}·$P{name}은 name·params.name이 되고, Sum({x})는 범위를 정한 sum(x), IIF·ToText는 iif()·format()이 됩니다. 실행 중에 배치를 바꾸던 스크립트는 visible, canGrow, 그룹 옵션으로 바꿉니다. 수식과 함수
- 출력물 비교. 같은 데이터로 기존 양식과 새 양식을 인쇄하거나 PDF로 저장해 겹쳐 봅니다. 디자이너의 [검사]가 없는 필드와 틀린 식을 찾아 줍니다.
- 화면 교체. 기존 뷰어 태그나 플러그인 호출을 createViewer(또는 React·Vue·Svelte·Angular 컴포넌트)로 바꾸고, 창구 무팝업 인쇄가 필요하면 Windows 프로그램을 설치합니다. PC의 기존 인쇄 모듈은 마지막에 지웁니다. Windows 인쇄 프로그램
AI로 기존 양식 옮기기
반복 작업은 두 가지 도구가 대부분 해 줍니다. 둘 다 기존 양식 파일을 직접 읽지는 않으며, 배치는 사람이 넘겨 줍니다.
- 엑셀·한글 표 붙여 넣기: 많은 양식이 이미 엑셀이나 한글(HWP) 표로 있습니다. 표를 복사해 디자이너에서 Ctrl+V 하면 칸마다 같은 너비·높이·병합·테두리·배경·정렬의 텍스트 요소가 됩니다. 그다음 값이 들어갈 칸을 필드 요소로 바꿉니다.
- 디자이너 AI 도우미: 내 애플리케이션에서 assistant 옵션을 켜면, 기존 양식(밴드, 필드, 수식, 합계)을 설명하는 것만으로 도우미가 정의를 만들거나 고칩니다. 모든 답은 적용 전에 검사됩니다. 도우미가 없으면 아래처럼 설명을 써서 llms-full.txt와 함께 AI 채팅에 주고, 나온 JSON을 디자이너의 JSON 보기에 붙여 넣으세요. 디자이너 · AI에게 요청하기
다음은 기존 리포팅 툴의 보고서 양식 설명입니다. FreeReport 보고서 정의(JSON)로 다시 만들어 주세요.
- 용지: A4 세로, 여백 15mm
- 상단: 제목 "거래명세서", 공급자 정보(상호, 대표자, 사업자번호, 주소)와 직인
- 상세: items 배열 (품명 name, 규격 spec, 수량 qty, 단가 price, 금액 = qty * price)
- 하단: 합계 금액과 한글 금액(일금 ○○원정)
- 기존 수식: {합계} = Sum({금액}) → FreeReport 식으로 바꿔 주세요
https://freereport.app/llms-full.txt 에 없는 옵션은 만들지 마세요.AI가 만든 결과는 디자이너의 [검사]와 인쇄 결과로 꼭 확인하세요. 위치나 수식을 잘못 읽을 수 있습니다. 옮긴 양식을 다른 사람에게 보여 주려면 디자이너의 [공유 링크]를 만들어 포럼에 올리면 됩니다. 포럼