문서
API
Types
Type: GridReportViewer

Type: GridReportViewer

GridReportViewer

ReportViewer에서 상속된 객체로 RealGrid의 GridView (opens in a new tab) 객체를 이용해 리포트 양식을 자동으로 생성해 주는 컴포넌트 입니다.

declare class GridReportViewer extends ReportViewer {
    constructor(
        container: string | HTMLDivElement,
        grid: GridView,
        options?: GridReportOptions,
    );
    /**
     * 컨테이너에 미리보기 랜더링
     */
    preview(): void;
}

GridReportOptions

GridView를 Report로 생성하는데 필요한 옵션을 지정합니다. 옵션은 GridReportViewer를 생성할때 인자로 넘겨줍니다. 옵션을 인자로 넘기지 않을 경우 기본값을 사용합니다.

interface GridReportOptions extends ReportOptions {
    paper?: GridReportPaperOptions; // 종이 영역 설정
    title?: GridReportTitle; // 보고서 제목 영역
    subTitle?: GridReportTitle; // 보고서 부제목 영역
    gridHeader?: GridReportHeader; // 보고서 헤더 영역
    pageHeader?: PageHeader; // 보고서에서 반복되서 출력되는 헤더 영역
    pageFooter?: PageFooter; // 보고서에서 반복되서 출력되는 푸터 영역
    layout: GridReportLayout; // 보고서에 표현되는 리얼그리드 관련 레이아웃 설정
}

GridReportPaperOptions

  • 타입: PaperOptions
  • 설명: 보고서 출력을 위한 페이퍼 정보
interface GridReportPaperOptions {
    orientation: 'portrait' | 'landscape'; // 종이 방향 설정
    paperSize: 'A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'A7' | 'A8'; // 종이 용지 설정
    marginLeft: number; // px 단위
    marginRight: number; // px 단위
    marginTop: number; // px 단위
    marginBottom: number; // px 단위
}

title

  • 타입: TextItem
  • 설명: 보고서의 상단에 표시되는 보고서의 제목입니다.
  • 출력 영역: Report Header

subTitle

  • 타입: TextItem
  • 설명: 보고서 제목의 하단에 표시되는 부제목입니다.
  • 출력 영역: Report Header

pageHeader

  • 타입: TextItem[]
  • 설명: 페이지 상단에 페이지 번호등을 표시합니다.
  • 출력 영역: Report Header

gridHeader

type GridReportHeader {
    items: TextItem[]
}

pageFooter

  • 타입: TextItem[]
  • 설명: 페이지 하단에 페이지 번호등을 표시합니다.
  • 출력 영역: Report Footer

layout

  • 타입: GridReportLayout
  • 설명: 그리드 레이아웃 정보
/**
 * 그리드 리포트 레이아웃 정보
 */
export type GridReportLayout = {
    /**
     * 보고서 생성시 제외할 그리드의 컬럼이름
     */
    exclude?: ColumnName[];
    /**
     * 활성화 할 경우 그리드의 컬럼의 비율에 맞게 리포트 종이영역에서 자동 조정
     */
    autoWidth?: boolean;
    /**
     * 데이터 행의 최소 높이
     */
    minRowHeight?: number;
    /**
     * 그리드 리포트 헤더 영역 전체 설정
     */
    header?: GridReportLayoutHeader;
    /**
     * 로우 인디케이터 영역 설정
     */
    rowIndicator?: {
        visible: boolean;
        header?: {
            styles?: CommonStyles;
        };
        styles?: CommonStyles;
    };
    /**
     * 각 컬럼 레이아웃에 대한 설정
     */
    columns?: LayoutColumn[];
    /**
     * 데이터 행 영역에 대한 셀 스타일 Callback 설정
     */
    cellStyleCallback?: (
        ctx: PrintContext,
        cell: TableCell,
        row: number,
        value: any,
    ) => CommonStyles;
};
 
/**
 * 그리드 리포트 헤더 레이아웃 정보
 */
export interface GridReportLayoutHeader {
    styles: CommonStyles;
}
 
type TableCell = {
    row: number;
    col: number;
    fieldName: string;
};
 
/**
 * 레이아웃 기본 스타일
 */
type CommonStyleName =
    | 'color'
    | 'backgroundColor'
    | 'fontSize'
    | 'fontWeight'
    | 'textAlign'
    | 'padding'
    | 'paddingLeft'
    | 'paddingRight'
    | 'paddingTop'
    | 'paddingBottom';
 
type CommonStyles = {
    [key in CommonStyleName]?: string | undefined;
};
 
/**
 * 컬럼 이름
 */
type ColumnName = string;
 
/**
 * GridReportLayout.layout.columns 옵션
 */
export type LayoutColumn = {
    name: string;
    header?: {
        styles?: HeaderStyles;
    };
    styles: ColumnStyles;
};

GridReportViewer layout 옵션 적용 예시

const options = {
    layout: {
        autoWidth: true,
        // 리얼그리드 인디케이터 표시 여부 설정
        rowIndicator: {
            visible: true,
        },
        header: {
            styles: {
                backgroundColor: 'lightblue',
            },
        },
        columns: [
            // 리얼그리드 KorNameColumn 컬럼을 리포트로 출력할 때 설정
            {
                name: 'KorNameColumn',
                styles: {
                    backgroundColor: '#cae8ff',
                },
            },
            {
                // 리얼그리드 SeColumn 컬럼을 리포트로 출력할 때 설정
                name: 'SeColumn',
                styles: {
                    backgroundColor: '#78bbfa',
                },
            },
            // 리얼그리드 PhoneNumberColumn 컬럼을 리포트로 출력할 때 설정
            {
                name: 'PhoneNumberColumn',
                styles: {
                    backgroundColor: '#3892f3',
                },
            },
            // 리얼그리드 DateColumn 컬럼을 리포트로 출력할 때 설정
            {
                name: 'DateColumn',
                styles: {
                    fontWeight: 'bold',
                },
            },
        ],
    },
};
 
viewer = new RealReport.GridReportViewer(container, gridView, options);
viewer.preview({ async: true, pageMark: false, noScroll: true });

리얼그리드 화면

Grid Sample

리얼리포트 화면 (GridReportViewer -> layout 옵션 적용)

GridReport Layout Sample