본문 바로가기
JAVA&Eclipse&Nexa

엑셀다운/업로드 (변형) 패턴

by 구엽하늘 2020. 5. 20.
728x90

1. Grid Design

1-1. 조회용 View외에 Excel용 View를 추가로 만든다.

1-2. Excel용 View에서 suppress를 제거하고, 코드업로드를 위한 칼럼을 추가한다.

2. 엑셀다운로드

2-1. 엑셀다운로드 전, format(view)을 excel용으로 변경한다.

2-2. 엑셀다운로드를 실행한다.

2-3. format(view)을 조회용으로 되돌린다.

/* 예제 */
this.fExcelDownload = function()
{
    switch(this.grd_dvsnPfls.formatid)
    {
        case "asmpView" :
            this.grd_dvsnPfls.set_formatid("asmpExcel");
            this.ef_exportexcel(this.grd_dvsnPfls, "재단실적_재료");
            this.grd_dvsnPfls.set_formatid("asmpView");
            break;

        case "default" :
        default :
            this.grd_dvsnPfls.set_formatid("excel");
            this.ef_exportexcel(this.grd_dvsnPfls, "재단실적_재료");
            this.grd_dvsnPfls.set_formatid("default");
            break;
    }
}

3. 엑셀업로드

this.fExcelUpload = function()
{
    var sSheet = "";

    this.vo_import.clearData();
    this.gf_importexcel(this, sSheet, "vo_import");
}

4. 엑셀업로드 후 처리

4-1. 엑셀업로드를 받은 Dataset과 조회 Dataset의 Mapping을 정리한다.

4-2. Mapping 된 칼럼은 copyRow하고, Mapping 되지 않은 칼럼은 setColumn으로 구현한다.

this.fExcelImportEnd = function(sId, sArg1)
{
    var colMap = [];

    switch(this.grd_dvsnPfls.formatid)
    {
        case "asmpView" :
            colMap.push("dvsnCd=Column0");
            colMap.push("titleHead=Column1");
            colMap.push("titleMid=Column2");
            colMap.push("preYearAmt=Column3");
            colMap.push("rate1=Column4");
            colMap.push("prePrdMmAmt=Column5");
            colMap.push("rate2=Column6");
            colMap.push("bdgtYyAmt=Column7");
            colMap.push("rate3=Column8");
            colMap.push("bdgtMmAmt=Column9");
            colMap.push("rate4=Column10");
            colMap.push("mmAmt=Column11");
            colMap.push("rate5=Column12");
            colMap.push("diff1=Column13");
            colMap.push("rate6=Column14");
            colMap.push("bdgtPerMmAmt=Column15");
            colMap.push("rate7=Column16");
            colMap.push("perMmAmt=Column17");
            colMap.push("rate8=Column18");
            colMap.push("nxtQrtrAsmp=Column19");
            colMap.push("nxtQrtrAsmpRate=Column20");
            colMap.push("perMmSum=Column21");
            colMap.push("perMmSumRate=Column22");
            colMap.push("diff2=Column23");
            colMap.push("planRateAcmpRate=Column24");
            colMap.push("yyDiffAmt=Column25");
            colMap.push("yyAcmpRate=Column26");
            colMap.push("pvyrRateIndcRate=Column27");
            colMap.push("yearRateAcmpRate=Column28");
            colMap.push("rmrk=Column29");
            break;

        case "default" :
        default :
            colMap.push("dvsnCd=Column0");
            colMap.push("titleHead=Column1");
            colMap.push("titleMid=Column2");
            colMap.push("preYearAmt=Column3");
            colMap.push("rate1=Column4");
            colMap.push("prePrdMmAmt=Column5");
            colMap.push("rate2=Column6");
            colMap.push("bdgtYyAmt=Column7");
            colMap.push("rate3=Column8");
            colMap.push("bdgtMmAmt=Column9");
            colMap.push("rate4=Column10");
            colMap.push("mmAmt=Column11");
            colMap.push("rate5=Column12");
            colMap.push("diff1=Column13");
            colMap.push("rate6=Column14");
            colMap.push("bdgtPerMmAmt=Column15");
            colMap.push("rate7=Column16");
            colMap.push("perMmAmt=Column17");
            colMap.push("rate8=Column18");
            colMap.push("diff2=Column19");
            colMap.push("planRateAcmpRate=Column20");
            colMap.push("pvyrRateIndcRate=Column21");
            colMap.push("yearRateAcmpRate=Column22");
            colMap.push("rmrk=Column23");
            break;
    }

    this.vo_resultData2.set_enableevent(false);

    try
    {
        this.vo_resultData2.clearData();

        for (var idx=2; idx<this.vo_import.getRowCount(); idx++)
        {
            var nRow = this.vo_resultData2.addRow();

            this.vo_resultData2.copyRow(nRow, this.vo_import, idx, colMap.join(","));

            // [TODO:조충묵] 추가구현 필요
            this.vo_resultData2.setColumn(nRow, "ivmtOrgzDvsnCd", "");
            this.vo_resultData2.setColumn(nRow, "acrsDvsnCd", "");
            this.vo_resultData2.setColumn(nRow, "stddYm", "");
        }
    }
    finally
    {
        this.vo_resultData2.set_enableevent(true);
    }
}

'JAVA&Eclipse&Nexa' 카테고리의 다른 글

제어문과 분기문  (0) 2020.06.04
이클립스 주석 설정/해제  (0) 2020.05.26
MData index 처리  (0) 2020.05.14
mybatis foreach  (0) 2020.05.12
이클립스 범위설정(Toggle Block Selection)  (0) 2020.05.06