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)Export에 jsp (또는 서블릿) 경로 설정
공통으로 설정하려면 ibsheet-common.js 파일의 _IBSheet.CommonOptions 설정
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", } } //다운로드와 업로드를 각각 지정하는 경우(서블릿으로 작성된 경우) options.Cfg = { "Export":{ "Down2ExcelUrl" : "/assets/ibsheet/jsp/Down2Excel.do", "LoadExcelUrl" : "/assets/ibsheet/jsp/LoadExcel.do", } }
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"] + "을 조회하였습니다."; } } }