= 엑셀 다운로드 및 업로드

== 개요

SDL 6.0은 사용자 관리, 외부 사용자 관리, 역할 관리, 메뉴 사용 이력, 파일 다운로드 이력, 코드 관리, 링크사이트 관리에서 엑셀 다운로드를 지원한다. +
그 외 메뉴에서 엑셀 다운로드 기능을 적용하려면 <<_공통컴포넌트_유틸,공통컴포넌트 & 유틸>>의 <<_excel_download_button,Excel Download Button>>, <<_excel_upload_button,Excel Upload Button>> 매뉴얼을 참고한다.

== API
.ExcelController.java

. 엑셀 다운로드 +
GET /excel/excel-download +

. 엑셀 업로드 +
POST /excel/excel-upload

== 엑셀 다운로드

=== excel.xml 설정
sdl-base/src/main/resources/excel 폴더에 다운로드 할 기능의 xml 양식을 만든다. +
다국어 적용(message.properties)이 된다.

. 대외비 표기여부, 시트보호 여부, 제목

[source,xml]
----
<CONFIDENTIAL>true</CONFIDENTIAL>   <!--> 대외비 표기여부(false : 태그작성 x) <-->
<PROTECTION>true</PROTECTION>       <!--> 시트보호 여부(false : 태그작성 x) <-->
<PASSWORD>sdl</PASSWORD>            <!--> 시트보호 암호(PROTECTION = false : 태그작성 x) <-->
<TITLE>sdl.excel.user.title</TITLE> <!--> 제목 <-->
----

[start=2]
. 문서 Comment 출력
.. 코멘트를 여러개 작성 가능

[source,xml]
----
<COMMENTS>
    <COMMENT>
        <COMMENT_LABEL>sdl.excel.accessLog.comment</COMMENT_LABEL>  <!--> 코멘트 <-->
        <COMMENT_FONT_COLOR>10</COMMENT_FONT_COLOR>                 <!--> 코멘트 글자색 <-->
    </COMMENT>
    <COMMENT>
        <COMMENT_LABEL>2번째 코멘트</COMMENT_LABEL>
        <COMMENT_FONT_COLOR>10</COMMENT_FONT_COLOR>
    </COMMENT>
</COMMENTS>
----

[start=3]
. 헤더

[source,xml]
----
<HEADERS>
    <HEADER>
        <HEADER_LABEL>NO.</HEADER_LABEL>                        <!--> 컬럼명 <-->
        <ROWSPAN>3</ROWSPAN>                                    <!--> 열병합 <-->
        <HEADER_FONT_COLOR>8</HEADER_FONT_COLOR>                <!--> 컬럼 글자색 <-->
        <HEADER_BACKGROUND_COLOR>44</HEADER_BACKGROUND_COLOR>   <!--> 컬럼 배경색 <-->
    </HEADER>
    <HEADER>
        <HEADER_LABEL>sdp.user.label.compName</HEADER_LABEL>
        <COLSPAN>3</COLSPAN>                                    <!--> 행병합 <-->
    </HEADER>
</HEADERS>
----

[start=4]
. 컬럼
.. 첫번째 Row 에 No. 필드 넣을 경우 No. 필드에 대한 <COLUMN>를 작성하지 않아도 된다.

[source,xml]
----
<COLUMNS>
    <COLUMN>
        <FIELD_NAME>compName</FIELD_NAME>           <!--> HEADER_LABEL에 대응하는 엔티티명 <-->
        <COLUMN_WIDTH>15</COLUMN_WIDTH>             <!--> 컬럼 너비 <-->
        <CELL_ALIGN>LEFT</CELL_ALIGN>               <!--> 셀 정렬 <-->
        <COLUMN_LOCKING>true</COLUMN_LOCKING>       <!--> 셀 잠금 여부(false : 태그작성 x) <-->
        <COLUMN_HIDDEN>true</COLUMN_HIDDEN>         <!--> 셀 숨김 여부(false : 태그작성 x) <-->
        <COLUMN_TYPE>Number</COLUMN_TYPE>           <!--> 날짜 형식(Date), 숫자 형식(Number)으로 출력 <-->
        <CELL_FONT_COLOR>10</CELL_FONT_COLOR>       <!--> 컬럼 글자색 <-->
        <BACKGROUND_COLOR>13</BACKGROUND_COLOR>     <!--> 컬럼 배경색 <-->
    </COLUMN>
</COLUMNS>
----
IMPORTANT:  간혹 다운로드 받은 엑셀에 초록색 경고가 뜨는데 이것은 DB에 문자로 저장된 숫자를 불러오기 때문이다. +
 따라서 <COLUMN_TYPE>을 'Number'로 하면 엑셀에서도 숫자로 잘 나올 것이다.

== 엑셀 업로드

=== excelUploadSample.xml 설정
SampleExcelUpload.vue 파일에 샘플로 엑셀 업로드가 구현되어 있다.

* 업로드할 데이터의 양식에 맞추어 excel.xml을 만들고 업로드 한다.
** 업로드 excel.xml 파일은 다운로드 excel.xml 파일과 같은 경로에 만든다.
** 날짜 형식 데이터가 업로드되지 않는 경우 `yyyy-MM-dd` 형태로 입력하거나 텍스트 서식으로 입력한다.
