sgcReports 2026.11: 기존 FastReport 보고서 가져오기, 그리고 Delphi, C++ Builder, .NET을 위한 매개변수, 표, 템플릿

· 컴포넌트
sgcReports 2026.11: Delphi와 .NET을 위한 FastReport 가져오기, 매개변수, 표, 템플릿 | eSeGeCe 블로그
✦  sgcUI 2026.11 신기능 · sgcReports

보고서는 그대로.
보고서 엔진만 바꾸세요.

sgcReports가 이제 FastReport, QuickReport, ReportBuilder 보고서를 가져오고, 구매자가 가장 먼저 확인하는 기능인 매개변수, 진짜 표, 보고서 템플릿, 검색 가능한 미리보기, 전자 인보이스를 추가합니다. 한 번의 릴리스에 열두 가지 새 기능입니다.

  • VCL
  • FireMonkey
  • C++ Builder
  • WinForms
  • WPF
  • Avalonia

열두 가지 새 기능을 4분 안에 소개합니다. YouTube에서도 시청하기.

12새 기능
3가져오기 지원 보고서 형식
68함수와 10개의 집계
6미리보기의 내보내기 형식

보고서 엔진을 바꾸고 싶어도 실제로 바꾸는 팀은 많지 않습니다. 이유는 하나, 아무도 다시 그리고 싶어 하지 않는 수백 개의 기존 보고서 때문입니다. sgcReports 2026.11은 그 이유를 없앱니다. FastReport, QuickReport, ReportBuilder 파일을 읽어 변환하고, 전환을 결정하기 전에 팀이 확인하는 부족한 부분을 채웁니다. 보고서 매개변수, 진짜 표 항목, 상속이 가능한 보고서 템플릿, 검색과 축소판이 있는 미리보기, 그리고 전자 인보이스를 위한 PDF 출력입니다.

아래의 모든 기능은 Delphi와 C++ Builder에서 VCL 및 FireMonkey로, 그리고 .NET에서 WinForms, WPF, Avalonia로 동일하게 동작합니다. 이 페이지의 모든 코드 샘플은 2026.11 소스를 기준으로 컴파일하고 실행해 확인했습니다.

Part 1 · 전환 비용을 없애세요

FastReport, QuickReport, ReportBuilder 보고서 가져오기

새로운 TsgcReportImporter는 FastReport .fr3 파일, QuickReport 폼(TQuickRep이 들어 있는 .dfm), ReportBuilder .rtm 템플릿을 텍스트 또는 바이너리로 읽어 sgcReports 보고서 정의로 바꿉니다. 페이지, 밴드, 항목, 스타일, 데이터 소스가 그대로 넘어오고, 식은 sgcReports 구문으로 변환되며, QuickReport와 ReportBuilder의 체크 박스는 새로운 체크 박스 항목이 됩니다.

실제 프로젝트에서 안심하고 쓸 수 있는 이유는 결과의 나머지 절반에 있습니다. 가져오기 도구는 매핑하지 못한 모든 객체, 속성, 식, 스크립트, 데이터 소스를 보고서 내부 경로와 이유와 함께 나열하므로, 직접 마무리해야 할 부분을 정확히 알 수 있습니다. 조용히 사라지는 것은 없습니다.

세 가지 보고서 형식이 들어가고, 하나의 sgcReports 정의가 나옵니다.
FastReport 파일을 가져온 뒤의 ReportImport 데모. 요약, 문제 목록, 변환된 보고서의 미리보기가 보입니다
가져온 FastReport 파일: 항목 13개, 식 2개 변환, 지원되지 않는 모든 객체가 이유와 함께 나열됩니다.

디자이너에는 가져오기 명령이 있어서, 코드를 작성하지 않고도 보고서를 가져와 미리보기로 확인하고 JSON으로 저장할 수 있습니다. 코드에서는 정리 코드를 제외하면 네 줄입니다.

  oImporter := TsgcReportImporter.Create;
  try
    oImporter.ImportFromFile(oReport, 'fr_items.fr3');
    for i := 0 to oImporter.ImportResult.Issues.Count - 1 do
      Writeln(oImporter.ImportResult.Issues[i].Reason);
  finally
    oImporter.Free;
  end;

C#에서도 동일합니다.

    var oImporter = new TsgcReportImporter();
    oImporter.ImportFromFile(oReport, "fr_items.fr3");
    foreach (var oIssue in oImporter.ImportResult.Issues)
      Console.WriteLine(oIssue.Reason);

원본 보고서의 스크립트, 서식 있는 텍스트, 차트, 크로스탭은 변환되지 않습니다. 이들은 문제 목록에 표시되므로 sgcReports의 대응 기능으로 다시 만들 수 있습니다. Delphi, C++ Builder, .NET용 새 ReportImport 데모는 세 가지 형식의 샘플 파일을 모두 가져옵니다.

미리보기가 요청하는 보고서 매개변수

이제 보고서가 매개변수를 선언할 수 있습니다. 텍스트, 정수, 숫자, 날짜, 날짜와 시간, 예 또는 아니요 형식을 지원하며, 각각 기본값 또는 기본 식, 필수 플래그, 다중 값, 고정되었거나 데이터 소스에서 읽어 오는 허용 값 목록을 가질 수 있습니다. 식과 스크립트에서는 :Name으로 읽습니다.

매개변수용 폼을 직접 만들 필요가 없습니다. VCL과 FireMonkey 미리보기 및 디자이너는 보고서를 준비하기 전에 매개변수를 묻고, .NET 미리보기도 마찬가지입니다. HTML 뷰어는 형식이 지정된 매개변수 폼을 보여 주며, HTTP 엔드포인트는 쿼리 문자열의 ?param.Name=value를 읽고 값이 맞지 않으면 깨진 보고서를 반환하는 대신 400으로 응답합니다.

필수 날짜, 데이터에서 읽은 목록에서 고른 국가, 최소 합계가 있는 매개변수 대화 상자
데이터에서 읽은 국가 목록이 있는 입력 창
선택한 날짜, 국가, 최소 합계로 필터링된 주문 보고서
값으로 필터링된 보고서

JSON 정의에서는 매개변수가 페이지 옆에 위치합니다.

"parameters": [
  { "name": "FromDate", "dataType": "rpdtDate", "required": true,
    "defaultExpression": "EncodeDate(2026, 1, 1)" },
  { "name": "MinTotal", "dataType": "rpdtFloat", "defaultValue": "0" }
]

사용자 없이 보고서를 준비하는 서비스는 코드에서 값을 설정하며, 입력 창은 표시되지 않습니다.

  oEngine.Report := oReport;
  oEngine.SetParameterValue('FromDate', VarFromDateTime(EncodeDate(2026, 3, 1)));
  oEngine.SetParameterValue('MinTotal', 100.0);

진짜 표 항목

텍스트 항목을 손으로 맞춰 표처럼 보이게 만드는 시대는 끝났습니다. 새로운 표 항목은 고정, 백분율, 자동 열 너비, 행과 열에 걸친 셀, 매 페이지마다 반복되는 머리글 행, 자체 데이터 소스에서 가져오는 데이터 행, 합계가 있는 바닥글 행, 내용에 따라 늘어나는 행을 지원합니다. 셀에는 스타일, 하이라이트, 하이퍼링크를 지정할 수 있습니다.

병합된 셀, 그리고 모든 페이지에서 표를 따라가는 머리글 행.
셀이 병합된 요금제 비교 표와 재고가 적은 값이 빨간색으로 표시된 제품 표
병합된 셀과 강조 표시된 재고 열
행, 열, 병합 및 분할 명령이 있는 보고서 디자이너의 표 편집기
디자이너의 표 편집기

내보내기에서도 구조가 유지됩니다. 표는 접근성 PDF에서 머리글 셀, 범위, 병합 정보가 있는 태그된 표가 되어 화면 읽기 프로그램이 표로 읽습니다. HTML 표가 되고, 머리글 행이 반복되는 Word 표가 되며, XLSX에서는 병합된 셀이 됩니다. 코드에서는 플루언트 빌더로 몇 줄이면 작성할 수 있습니다.

  oTable := oBuilder.Page('Main').Paper(rpsA4).Margins(15).ReportTitle(14)
    .CanGrow.Table(0, 0, 180, 'Products');
  oTable.Column(25).Column(0, rtwmAuto).Column(30)
    .HeaderRow(['Products', '', '']).RowStyle('Title').Cell(0, 0).Span(1, 3)
    .HeaderRow(['Code', 'Name', 'Price']).RowStyle('Head')
    .DataRow(['[Products.Code]', '[Products.Name]', '[Products.Price]'])
    .Cell(1, 2).Format('#,##0.00');
  oTable.Table.RepeatHeaderRows := True;

체크 박스, SVG, 스파크라인, 게이지

페이지에 그릴 수 있는 네 가지 새로운 요소입니다.

보고서 행 안에 들어 있는 체크 표시, 스파크라인, 게이지.
SVG 로고가 있고 모든 행에 체크 박스, 스파크라인, 진행률 게이지가 있으며 평균 진행률 게이지가 있는 프로젝트 현황 보고서
프로젝트 현황 보고서: SVG 로고, 체크 박스, 프로젝트마다 12개월 스파크라인과 진행률 게이지, 그리고 평균을 보여 주는 원형 게이지.

사용자 지정 항목의 설정이 이제 식을 받으며, 출력되는 모든 밴드마다 평가됩니다. 덕분에 각 행이 자신만의 스파크라인과 게이지를 그립니다.

  oBand := oPage.MasterData('Projects', 14);
  oBand.CheckBox('Projects.Done', 4, 4, 6, 6).Name('DoneBox');
  oBand.Item.CheckBox.CheckStyle := rcsCheck;
  oBand.Custom('Sparkline', 75, 1, 60, 12, ['values=[Projects.Trend]',
    'kind=area', 'markers=last,high']).Name('Trend');
  oBand.Custom('Gauge', 140, 2, 50, 10, ['value=[Projects.Progress]',
    'gaugeKind=linear', 'unit=%']).Name('ProgressGauge');

보고서 템플릿과 상속

모든 회사에는 레터헤드가 있고, 모든 인보이스, 명세서, 납품서가 이를 반복합니다. 새로운 InheritsFrom 속성(JSON에서는 "inheritsFrom")을 쓰면 보고서 정의가 기본 정의에서 출발하여 차이점만 저장합니다. 페이지, 밴드, 항목, 스타일은 이름으로 병합됩니다. 자식 보고서는 속성을 재정의하거나, 항목을 추가하거나, "$first"로 밴드를 맨 앞에 두거나, "$remove"로 상속된 항목을 제거할 수 있습니다. 기본 보고서에서 로고를 바꾸면 이를 상속하는 모든 보고서가 따라옵니다.

하나의 레터헤드, 이를 상속하는 두 개의 보고서.
레터헤드 기본 보고서
기본 보고서: letterhead.json
레터헤드를 상속하는 인보이스
이를 상속하는 인보이스
레터헤드를 상속하고 연락처 블록을 제거한 납품서
납품서도 마찬가지입니다

위의 납품서 전체는 몇 줄의 차이점으로 이루어져 있습니다. 여기서는 레터헤드의 연락처 블록을 제거합니다.

"inheritsFrom": "letterhead.json",
"pages": [ { "name": "Page1", "bands": [
  { "name": "PageHeader", "items": [
    { "name": "Contact", "$remove": true }
  ] }
] } ]
  oDef.BaseFolder := ExtractFilePath(ExpandFileName('letterhead.json'));
  oDef.LoadFromFile(oReport, 'child.json');

기본 보고서는 BaseFolder 아래에서 찾거나, OnResolveBase 핸들러가 데이터베이스나 리소스에서 불러옵니다. 상속 체인은 최대 8단계까지 가능하며, 파일 하나가 필요할 때는 Flat이 병합된 정의를 기록합니다. VCL, FireMonkey, HTML 디자이너는 상속된 객체를 표시하고, 이를 재정의로 편집하며, 기본 보고서에서 새 보고서를 만들 수 있습니다. VCL 디자이너에서는 재정의된 속성이 굵게 표시됩니다.

납품서가 열려 있고 상속된 밴드가 표시되며 재정의된 제목이 굵게 보이는 VCL 보고서 디자이너
상속된 밴드가 표시되고, 재정의된 제목은 굵게 나타납니다.

검색, 축소판, 내보내기 메뉴가 있는 미리보기

미리보기에는 페이지의 모든 일치 항목을 강조 표시하는 찾기 표시줄(Ctrl+F, F3, 대소문자 구분, 전체 단어), 페이지 축소판 창, PDF, XLSX, CSV, PNG, HTML, Word용 내보내기 메뉴가 생겼고, 저장을 직접 처리할 수 있는 OnExport 이벤트도 있습니다. VCL과 FireMonkey 미리보기, 그리고 WinForms, WPF, Avalonia 미리보기에서 사용할 수 있으며, FireMonkey PDF 뷰어에도 텍스트 검색이 추가되었습니다.

사용자가 이미 쓰고 있는 미리보기에서 찾기, 이동, 내보내기.
현재 일치 항목은 주황색, 다른 일치 항목은 노란색으로 표시된 미리보기 찾기 표시줄
모든 일치 항목이 강조 표시되는 찾기
페이지 축소판 창이 열려 있는 미리보기
페이지 축소판
  oPreview.ShowThumbnails := True;
  oPreview.ExportFormats := [rpxPDF, rpxXLSX];
  if oPreview.SearchText('Total', False, True) then
    Writeln(oPreview.SearchResults, ' match(es)');

Part 2 · 부족한 부분을 채우세요

밴드나 항목에 새로운 Bookmark 식을 설정하면 PDF 내보내기가 북마크를 그룹별로 중첩된 문서 개요로 기록하고, VCL과 FireMonkey 미리보기는 이를 개요 창(ShowOutline)에 표시합니다. 새로운 Hyperlink 속성은 웹 또는 mailto 주소를 열거나, #name으로 같은 보고서의 Anchor로 이동하며, 링크는 PDF, HTML, Word, XLSX 내보내기에서 유지됩니다.

그룹 북마크에서 만든 지역과 고객이 표시된 미리보기 개요 창
두 단계의 그룹으로 만든 개요
각 지역으로 이동하는 링크와 웹 페이지 링크가 있는 보고서 페이지
웹 페이지와 앵커로 가는 링크

전자 인보이스 PDF: Factur-X, ZUGFeRD, XRechnung

PDF 내보내기는 새로운 EInvoice 속성을 통해 애플리케이션의 전자 인보이스 XML을 PDF/A-3 연관 파일로 포함합니다. Factur-X, ZUGFeRD, XRechnung를 지원하며, PDF/UA를 갖춘 PDF/A-3a로도 가능합니다. 사람이 읽는 인보이스와 기계가 읽는 데이터가 하나의 파일에 담겨 전달됩니다. sgcReports가 XML을 직접 작성하지는 않으며, 애플리케이션이 제공합니다.

XML이 PDF/A-3 인보이스 안에 들어갑니다.
Factur-X와 ZUGFeRD, 스페인 Verifactu, 폴란드 KSeF 버튼이 있는 ReportEInvoice 데모
ReportEInvoice 데모: PDF/A-3으로 저장한 Factur-X 인보이스, 그리고 Verifactu(스페인)와 KSeF(폴란드)용 QR 코드 템플릿.

68개의 함수와 10개의 집계를 갖춘 식 라이브러리

식 라이브러리가 68개의 함수와 10개의 집계로 늘어납니다. 날짜 연산, 채우기와 서식 지정, Choose, 금액을 sgcUI의 12개 언어로 글자로 풀어 쓰는 ToWords, 그리고 집계 SumIf, CountIf, Previous, RunningSum, RunningCount가 새로 추가되었습니다. 집계는 출력되는 밴드를 따릅니다. 그룹 바닥글에서는 그룹의 합계를, 페이지 바닥글에서는 페이지의 합계를 제공합니다.

PadLeft, Upper, Proper, ToWords, RunningSum, IIF를 사용하는 보고서 페이지
한 보고서 페이지의 PadLeft, Upper, Proper, ToWords 및 RunningSum 열.

하이라이트: 스크립트 없는 조건부 스타일

하이라이트는 항목에 조건과 스타일의 목록을 지정합니다. 처음으로 참이 되는 조건이 항목의 스타일을 대체하므로, 스크립트를 한 줄도 쓰지 않고 음수 합계는 빨간색으로, 좋은 결과는 초록색으로 출력됩니다. 하이라이트는 JSON, 플루언트 빌더, 그리고 VCL, FireMonkey, HTML 디자이너에서 사용할 수 있습니다.

음수 값은 빨간색, 5000을 넘는 결과는 초록색으로 표시된 지점별 실적
음수는 빨간색, 좋은 달은 초록색
두 개의 조건과 스타일이 있는 보고서 디자이너의 하이라이트 편집기
하이라이트 편집기

대용량 보고서를 위한 진행률과 취소

엔진에는 페이지 수와 레코드 수를 제공하는 새로운 OnProgress 이벤트와 Cancel 메서드가 있습니다. 미리보기는 보고서를 준비하는 동안 진행률을 보여 주며 Esc로도 누를 수 있는 취소 버튼을 제공합니다. HTTP 엔드포인트에는 새로운 MaxPages와 Timeout 제한이 생겨서 폭주하는 보고서 하나가 서버를 붙잡지 못합니다.

페이지 수와 레코드 수, 취소 버튼과 함께 40,000개 레코드의 보고서를 준비하는 미리보기
40,000개 레코드 준비 중: 페이지 수와 레코드 수, 그리고 취소 버튼.

모든 플랫폼에서 동일한 API

이 페이지의 모든 기능은 VCL 및 FireMonkey 미리보기와 디자이너를 갖춘 Delphi와 C++ Builder용으로, 그리고 WinForms, WPF, Avalonia를 갖춘 .NET용으로 출시되며 클래스와 속성 이름도 같습니다. JSON으로 정의한 보고서는 두 세계 사이를 그대로 오가고, 엔진은 서비스와 Linux64 데몬에서 여전히 헤드리스로 실행됩니다.

.NET WinForms에서 실행 중인 ReportTables 데모
.NET WinForms의 ReportTables 데모.

이번 릴리스에는 Delphi, C++ Builder, .NET용 새 데모 다섯 개가 포함됩니다. ReportImport, ReportParameters, ReportTables, ReportVisualItems, ReportInheritance이며, ReportEInvoice 데모도 함께 제공됩니다.

sgcReports 2026.11의 그 밖의 새 기능

보고서 가져오기와 스파크라인 및 게이지 항목에는 등록된 에디션이 필요합니다. sgcReports는 sgcUI Enterprise와 All-Access에 포함되어 있으며 단독으로도 판매됩니다.

sgcReports 2026.11 체험하기

FastReport, QuickReport, ReportBuilder 파일 중 하나를 직접 가져와서 무엇이 넘어오는지 확인해 보세요.

질문이나 의견이 있으신가요? 문의해 주세요. 코드를 직접 작성한 사람들이 답변해 드립니다.