IBSheet8 의 엑셀 다운로드/업로드 기능은 크게 2가지로 제공 됩니다


1. 서버모듈

- 동작방식


다운로드 : 화면의 시트 정보와 조회 데이타를 서버로 전송하여, 서버에서 엑셀 파일을 만들어 다운로드 하는 방식


업로드 : 화면의 시트 정보와 파일을 서버로 전송하여, was의 특정 경로에 파일을 생성 후 생성된 파일을 읽어서 시트에 표시 하는 방식

- 구현하기
1) 배포한 라이브러리 파일 추가


java - jar(WEB-INF/lib 경로에 추가)와 jsp 추가 


오픈 소스인 poi 라이브러리를 이용하여 개발 되었다.(poi 3.13 과 poi 4.1.2 두가지 제공)

poi는 3.13과 4.1.2 둘중 하나만 사용해야 하며 중복 사용은 피해야 한다.

jdk 1.8 사용을 권장하며, jdk11 이상이면 poi-4.1.2를 이용해야 한다.


[poi 3.13 라이브러리]


[poi4.1.2 라이브러리]


닷넷- dll(bin 경로에 추가)과 aspx 추가 



2) 엑셀 js 추가 (plugins/ibsheet-excel.js 추가)

<script src="/assets/ibsheet/ibsheet.js"></script>
<script src="/assets/ibsheet/locale/ko.js"></script>

<!-- 서버모듈로 다운로드 하기 위한 엑셀 플러그인 링크 -->
<script src="/assets/ibsheet/plugins/ibsheet-excel.js"></script>


3) (Cfg)Exportjsp (또는 서블릿) 경로 설정(공통으로 설정하려면 ibsheet-common.js에 설정)

options.Cfg = {
    "Export":{
        "Url" : "/assets/ibsheet/jsp", 
        "Ext" : "jsp" //확장자 설정 default jsp
    }
}

//다운로드와 업로드를 각각 지정하는 경우
options.Cfg = {
    "Export":{
        "Down2ExcelUrl" : "/assets/ibsheet/jsp/Down2Excel.jsp",
        "LoadExcelUrl" : "/assets/ibsheet/jsp/LoadExcel.jsp",
    }
}

 
3) 함수 호출

//다운로드
var param = {
        FileName:"홍길동 교통비 내역.xlsx",
        downCols:"Visible",  /* 보여지는 컬럼만 다운로드*/
        downRows:"Visible", /* 필터링등을 통해 화면에 노출된 행만 다운로드 */
};

sheet.down2Excel(param); 

//업로드
var param = {mode:"HeaderMatch", workSheetName:"12월결산"};
sheet.loadExcel(param);


2. 클라이언트 모듈(xlsx 확장자만 가능)

- 동작방식


다운로드 :  브라우저에서 엑셀 파일을 생성 하는방식

업로드 :  브라우저에서 엑셀 파일을 읽어 시트에 표시 하는 방식

- 구현하기
1)  jsZip 라이브러리 추가 (plugins/jszip.min.js 추가)


<script src="/assets/ibsheet/ibsheet.js"></script>
<script src="/assets/ibsheet/locale/ko.js"></script>

<!-- jszip 라이브러리 추가, 추가하지 않을 경우 자동으로 plugins/jszip.min.js ajax 호출 함 -->
<script src="/assets/ibsheet/plugins/jszip.min.js"></script>



2) 함수 호출

//다운로드 
sheet.exportData({fileName: "재고리스트.xlsx"});

//업로드
var param = {mode:"HeaderMatch", workSheetName:"sheet"};
sheet.importData(param);


3. 업로드/다운로드 후 콜백 함수

options.Events = {
    onExportFinish:function(evtParam){ //다운로드 콜백
        //다운로드 완료 후 페이지 이동
        if(evtParam.result){
            location.href = "board.do";
        }
    },onImportFinish:function(evtParam){ //업로드 콜백
        // sName 열의 값이 "구청앞"인 경우 필터링 결과와 상관없이 화면에 보여줍니다.
        // 다른 열의 값에 의해 필터링이 영향을 받을 때 유용합니다.
        if (evtParam["type"] == "TEXT") {
            document.getElementById("myDiv").innerText = row["type"] + "을 조회하였습니다.";
        }
    }
}