사용자가 선택한 엑셀 파일을 시트에 로드하지 않고 지정한 서버 측 페이지로 바로 전달합니다.
엑셀 내용을 시트에 띄울 필요 없이 서버에서 직접 처리하는 경우 사용합니다.
사용 전 서버모듈 설치와/plugins/ibsheet-excel.js스크립트 로드가 필요합니다.
이 함수를 호출하면 파일 선택 창이 나타나고, 사용자가 선택한 엑셀 파일이Cfg.Export속성에 지정한DirectLoadExcel.jsp(또는DirectLoadExcel.aspx)로 전달됩니다.
이 jsp 파일이 엑셀을 파싱한 뒤extendParam의FP인자로 지정한 서버 측 페이지로 데이터를 forward합니다.

업로드 실패 시 결과 코드와 메시지는 onImportFinish의 result(음수 코드)와 message로 받습니다. 중계 페이지에서 조건에 따라 오류 메시지를 내보내는 방법은 엑셀 서버 모듈 트러블슈팅을 참고하세요.
void directLoadExcel( param );
| Name | Type | Required | Description |
|---|---|---|---|
| extendParam | string |
선택 | 전달할 parameter(querystring형식으로 작성, String 형태로 rquest.setAttribute("extendParam에 설정한 파라미터 이름")으로 담음) DirectLoadExcel.jsp에서 파싱한 정보를 처리할 서블릿(혹은 jsp)경로를 FP라는 이름으로 전달해야 함 |
| fileExt | string |
선택 | 업로드 가능한 파일 확장자를 구분자("|")로 연결하여 설정합니다. (default: "xls\|xlsx") |
| mode | string |
선택 | "HeaderMatch", "NoHeader", "HeaderSkip" 중에 하나의 문자열을 입력합니다. 각 문자의 의미는 다음과 같습니다.
default: "HeaderMatch")
|
| startRow | number |
선택 | 엑셀에서 시트가 몇번째 행에서 시작하는지 설정합니다. 설정하지 않으면 엑셀의 첫번째 행부터 (1부터시작) 읽어들임. |
| endRow | number |
선택 | 엑셀에서 시트가 몇번째 행까지 읽어들일지를 설정합니다. 설정하지 않으면 엑셀의 마지막 행까지 읽어들임. |
| workSheetName | string |
선택 | 읽어들일 엑셀 파일의 워크시트 명을 설정합니다. 일치하는 워크시트 명이 없으면 첫번째 워크시트를 읽습니다. |
| workSheetNo | number |
선택 | 읽어들일 엑셀 파일의 워크시트 순번을 설정합니다. 설정하지 않으면 첫번째 워크시트를 읽습니다. |
| reqHeader | object |
선택 | 서버 전송 헤더에 사용자가 지정한 헤더 정보를 설정합니다. |
| useXhr | boolean |
선택 | xhr 통신을 이용해 엑셀 파일을 로드합니다.0(false):xhr 통신 사용 안함 (default)1(true):xhr 통신 사용 |
none
//FP로 최종 데이터를 받을 서블릿(혹은 jsp) 경로를 지정해야 함
var param = {
startRow:5,
workSheetName:"sheet4",
extendParam:"year=2019&deptNo=0041&FP=./save/empExcelData.do"
};
sheet.directLoadExcel(param);
DirectLoadExcel.jsp(서버모듈)에서 directLoadExcel()로 파싱한 뒤 sendDirectToFP()를 호출하면, FP로 지정한 페이지로 파싱 데이터가 SHEETDATA 속성에 담겨 forward됩니다.
// DirectLoadExcel.jsp (서버모듈): 엑셀 파싱 후 FP 페이지로 forward
IBSheetLoad load = new IBSheetLoad();
load.setEncoding("UTF-8");
load.setService(request, response);
load.directLoadExcel(); // 엑셀 파싱
load.sendDirectToFP(); // FP 로 지정한 페이지로 파싱 데이터(SHEETDATA) forward
forward된 FP 페이지에서는 아래처럼 SHEETDATA를 받아 처리합니다.
// FP 페이지(예: empExcelData.do): forward된 데이터를 SHEETDATA 로 받아 처리
List<Map<String, Object>> data = (List<Map<String, Object>>)request.getAttribute("SHEETDATA");
Map<String, Object> header = (Map<String, Object>)data.get(0);
for (String key : header.keySet()) {
System.out.print(key + "|");
}
System.out.println();
for (Map<String, Object> row : data) {
for (String key : row.keySet()) {
System.out.print(row.get(key) + "|");
}
System.out.println();
}
forward 대신, sendDirectToFP()를 호출하지 않고 directLoadExcel()의 반환값(List)을 서버모듈에서 바로 처리할 수도 있습니다(아래). 이 방식은 FP를 사용하지 않으므로, 클라이언트도 FP 없이 sheet.directLoadExcel();로 호출하면 됩니다.
// directLoadExcel() 반환값(List)을 중계 페이지에서 바로 받아 처리 + 오류 처리
IBSheetLoad load = new IBSheetLoad();
load.setEncoding("UTF-8");
load.setService(request, response); // getLoadError/getLoadFinish가 response를 사용 → 필수
OutputStream out = response.getOutputStream();
try {
List<Map<String, String>> rows = load.directLoadExcel(); // 파일 전체를 한 번에 List로 반환
for (Map<String, String> row : rows) {
// 검증/저장 (개발자 로직) — 실패 시 아래 catch로
// myDao.insert(row);
}
// 성공: 완료 신호 (result 0 이상 = 정상)
out.write(load.getLoadFinish("EXCEL", 1, rows.size() + "건 완료"));
out.flush();
} catch (Exception e) {
// 실패: 음수 코드 + 메시지 (메시지의 따옴표 등은 제거 후 전달)
String msg = ("업로드 실패: " + e.getMessage()).replace("\"", "").replace("'", "");
out.write(load.getLoadError(-500, msg));
out.flush();
}
이 방식은 파일 전체를 메모리에 올리므로 일반 건수에 적합합니다.
행 수가 매우 많으면 서버 메모리 부족(OutOfMemoryError)이 발생할 수 있어 초대용량 처리에는 권장하지 않습니다.
오류 처리 상세(메시지 정제, 전체 롤백, 예약 오류 코드)는 엑셀 서버 모듈 트러블슈팅을 참고하세요.
//directLoadExcel 닷넷 서버모듈 예시
List<Object> data = (List<Object>)this.Context.Items["sheetData"];
Dictionary<String, String> header = (Dictionary<String, String>)data[0];
foreach (String key in header.Keys) {
System.Diagnotics.Debug.Write(key + "|");
}
System.Diagnotics.Debug.WriteLine();
foreach (Dictionary<String, String> row in data) {
foreach (String key in row.Keys) {
System.Diagnotics.Debug.Write(row[key] + "|");
}
System.Diagnotics.Debug.WriteLine();
}
| product | version | desc |
|---|---|---|
| excel | 0.0.0 | 기능 추가 |
| excel | 0.0.8 | reqHeader 기능 추가 |