# DirectDown2Excel (export method)

> 서버에서 데이터를 구성한 후 엑셀을 다운로드 합니다.
> 헤더타이틀이나 각 컬럼의 서식(포맷)정보만 서버로 전달하고, 데이터 부분은 별도의 페이지(혹은 서블릿)를 통해 데이터를 java.util.List(java.util.Map) 구조로 생성하여 "SHEETDATA"라는 이름으로 request객체에 담아 `DirectDown2Excel.jsp` 파일에 전달하면 헤더 정보와 데이터를 조합하여 엑셀 파일을 다운 받습니다.

### Syntax

    ObjId.DirectDown2Excel([parameters]);

### Info

Parameter | Type | Required | Description
--- | --- | --- | ---
AllTypeToText | `Boolean` | 선택 | 날짜 데이터를 날짜 서식으로 다운로드 받을지 여부 (Default: 0)
AppendPrevSheet | `Boolean` | 선택 | Buffer 모드 사용시 이전 워크시트에 Append 적용 여부 (Default: 0)
AutoSizeColumn | `Boolean` | 선택 | 컬럼 넓이 자동 조절 여부 (Default: 0(컬럼 넓이 자동 조절 안함))
ComboValidation | `Boolean` | 선택 | 콤보의 드롭다운 형식 다운로드 여부 (Defualt: 0)
DownCols | `String` | 선택 | 다운로드 받을 열들을 `|` 로 연결 (Default: "")(사용안함)
DownCombo | `String` | 선택 | 콤보의 TEXT/CODE 형태의 다운로드 여부 (Default: "TEXT")
DownHeader | `Boolean` | 선택 | 헤더의 다운로드 여부 (Default: 1)
ExcelFontSize | `Number` | 선택 | 폰트 크기 설정 (Default: 0)
ExcelHeaderRowHeight | `String` | 선택 | 헤더 높이 설정 (Default: "")(사용안함)
ExcelRowHeight | `String` | 선택 | 엑셀의 행높이 설정 (Default: "")(사용안함)
ExtendParam | `String` | 선택 | 서버로 전달할 추가 파라미터 Get방식의 QueryString으로 연결하여 설정 (Default: "")(사용안함)
ExtendParamMethod | `String` | 선택 | ExtendParam인자의 전송 방식 (Default: GET)
FileName | `String` | 선택 | 저장할 파일 명 (Default: "Excel.xls")
HiddenColumn | `Boolean` | 선택 | 열숨김 반영 여부 (Default: 0)
KeyFieldMark | `Boolean` | 선택 | KeyField 마크(*)를 다운 여부 (Default: 1(다운 받음))
Mode | `Number` | 선택 | 다운로드 모드 - `-1`: Status, Delcheck, Result 타입 및 Hidden 칼럼을 제외하고 다운로드 - `0` : 모든 컬럼을 다운로드 - `1` : Status, DelCheck 타입을 제외하고 다운로드 - `2` : Hidden컬럼을 제외하고 다운로드
Merge | `Number` | 선택 | 헤더의 머지의 다운로드 적용 방식 설정 - `0` : 사용 안함 - `1` : 사용함(셀 병합시 부속셀의 값 설정 함) - `2` : 사용함(셀 병합시 부속셀의 값은 설정하지 않음)
Multipart | `Boolean` | 선택 | 다운로드 받을 데이터 전달 방식 (Default: 1)
NumberFormatMode | `Number` | 선택 | 실수 형태의 데이터 타입에 대한 셀서식 설정 방식 설정 - `0` : 컬럼 단위 Format 기준 셀서식 설정 (Default) - `1` : 셀의 값 기준에 따라 정수 또는 실수 포맷형태의 셀서식 설정 - `2` : 일반 서식으로 설정 (별도의 셀 서식포맷을 설정하지 않음)
NumberTypeToText | `Boolean` | 선택 | 숫자타입 셀 데이터를 문자 타입으로 다운로드 받을지 여부 숫자타입 컬럼의 일부 셀에 포맷을 변경하여 문자열을 삽입하는 경우 사용 (Default: 0)
ReportXMLURL | `String` | 선택 | 엑셀파일에 타이틀이나 패턴등을 별도의 xml파일을 통해 설정
SheetDesign | `Number` | 선택 | 디자인 다운로드 적용 여부 - `0` : 셀 외곽선을 제외한 모든 디자인 적용 안함 (Default) - `1` : 모든 셀 스타일을 적용 - `2` : 셀 외곽선을 제외한 셀 스타일을 적용 - `3` : 셀 외곽선 및 스타일을 모두 적용 안함
SheetName | `String` | 선택 | 엑셀WorkSheet이름 (Default: "Sheet")
TextToGeneral | `Boolean` | 선택 | Type:”Text”의 엑셀 서식 형식 (Default: 1(일반))
TitleAlign | `String` | 선택 | 타이틀 정렬 설정 (Default: "center"(중앙정렬))
TitleText | `String` | 선택 | IBSheet 위쪽에 제목이나 기타 자료들의 문자열 설정 컬럼 구분자 `|`로 연결, 행 구분자 `\r\n`로 연결, 해당 셀안에서 줄바꿈처리를 하려면 `\r` 또는 `\n`을 설정 (Default: "")(사용안함)
URL | `String` | 선택 | 엑셀 데이터를 생성할 페이지 (Default: "")(사용안함)
UserMerge | `String` | 선택 | 해당 영역에 대한 머지처리 (Default: "")(사용안함)
WordWrap | `Boolean` | 선택 | 줄바꿈 처리 여부(Default: 1)(줄바꿈 허용)
ReqHeader | `Boolean` | 선택 | Request Header에 사용자가 지정한 헤더 정보를 설정합니다. 이 인자를 설정하면 UseXhr을 true로 설정한 것과 동일하게 동작합니다.
UseXhr | `Boolean` | 선택 | iframe를 통한 form submit 방식으로 통신하는 기존 방식과 다르게 엑셀 다운로드시 통신 방식을 xhr로 설정합니다. 프레임웍의 각종 보안처리로 인하여 iframe를 사용할 수 없다거나 Cookie(파일 다운로드 완료 후 화면의 대기이미지 닫을 때 필요)를 읽고 쓸수 없을 때 이 속성을 true로 설정해주세요.

### Returns

none

### Example

    // DirectDown2Excel 순서
    // 1. DirectDown2Excel 메소드 호출 -> 2. DB 조회 -> 3. "SHEETDATA를 담아 DirectDown2Excel.jsp페이지로 전달" -> 4. DirectDown2Excel.jsp에서 엑셀 다운

    // 시트 화면 페이지
    // 1. DirectDown2Excel 메소드 호출
    var param = {
      URL:"/bussinessList.jsp",
      ExtendParam:"sa_nm=양진열&sa_no=980123",
      FileName:"PersonList.xls"
    };
    mySheet.DirectDown2Excel(param);

    // bussinessList.jsp 페이지
    // 2. 엑셀로 내려질 데이터를 DB에서 조회
    String sa_name = request.getParameter("sa_nm");
    String sa_no = request.getParameter("sa_no");

    String query = "SELECT POSTNO, SIDO, SIGUNGU, LEE, ADDRESS FROM POSTNO";
    Class.forName(driver);
    conn = DriverManager.getConnection(url,id,pwd);
    pstmt = conn.prepareStatement(query);
    rs = pstmt.executeQuery();

    // 3. 데이터를 List(Map)형태로 전환.
    // map 데이터 생성시 이름은 반드시 시트의 SaveName과 동일 해야 함.
    Java.util.List li = new java.util.List();
    java.util.Map mp = null;
    while(rs.next()){
      mp = new Java.util.Map();
      mp.put("POSTNO",rs.getString("POSTNO"));
      mp.put("SIDO",rs.getString("SIDO"));
      ..
      ..
      li.add(mp);
    }

    // 데이터를 반드시 SHEETDATA라는 이름으로 담는다.
    request.setAttribute("SHEETDATA", li);

    // 4. DirectDown2Excel.jsp 페이지로 forwardingm
    String forwardPath = "./DirectDown2Excel.jsp";
    if(!"".equals(forwardPath)){
      RequestDispatcher rd = request.getRequestDispatcher(forwardPath);
      rd.forward(request,response);
    }

### Since

version | desc
--- | ---
7.0.0.0 |
7.0.2.0 | AllTypeToText 속성 추가
7.0.13.26 | NumberFormatMode 속성 추가
7.0.13.89 | Mode 속성 추가
7.0.13.230 | ReqHeader, UseXhr 속성 추가