# 엑셀파일 업로드/다운로드 (appendix)

> 시트의 내용을 엑셀이나,텍스트 파일로 다운로드 하거나, 반대로 파일의 내용을 읽어 시트에 업로드하는 방법에 대해 알아봅니다.
> 이 내용은 서버 기반 파일 다운로드/업로드 방법을 설명합니다.
> 클라이언트 기반 다운로드/업로드는 exportData/importData 함수를 참고해 주세요.

## 필수 파일 요소

업로드/다운로드 작업을 위해서 다음과 같은 파일이 필요합니다.

1. 서버모듈(엑셀모듈)

파일명 | 용도
--- | ---
ibsheet8-1.x.x.jar | 엑셀 서버코어모듈
ibsheet8-hwpx-1.0.x.jar | `down2Hwpx` 서버코어모듈
poi-4.1.2, poi-ooxml-4.1.2, poi-ooxml-schemas-4.1.2 | 엑셀 파일 생성/파싱 모듈
commons-collections4-4.4.jar, commons-compress-1.19.jar commons-math3-3.6.1.jar, curvesapi-1.06.jar, servlet-api.jar SparseBitSet-1.2.jar, xmlbeans-3.1.0.jar | poi 이용시 필요 파일
commons-codec-1.13.jar | 엑셀 업로드 관련 인코딩 모듈, `down2Hwpx`시 필요
commons-logging-1.1.3.jar | 로그 모듈
ib-itext.jar | pdf 다운로드 모듈
batik-all-1.17.jar, commons-io-2.11.0.jar xml-apis-ext-1.3.04.jar, xmlgraphics-commons-2.9.jar | 이미지 처리 관련 모듈, `down2Hwpx`시 필요

- dotnet 4.0 이용시 필요 파일

파일명 | 용도
--- | ---
IBSheet8-4.0.dll | 엑셀 서버코어모듈
IBSheet8-4.0.resources.dll | 엑셀 서버코어 서브모듈
Syncfusion.Compression.Base.dll, Syncfusion.Core.dll, Syncfusion.XlsIO.Base.dll | 엑셀 생성/파싱 모듈
wkhtmltopdf.exe | pdf생성 모듈

## Maven 의존성 설정

Maven을 사용하는 경우 `pom.xml`에 아래 의존성을 추가합니다. (POI `4.1.2` 기준) POI 계열과 이미지 처리 라이브러리를 명시적으로 지정하며, IBSheet 코어 모듈(`ibsheet8`)과 PDF 다운로드용 `ib-itext`는 공개 Maven 저장소에 없으므로 `system` scope로 `WEB-INF/lib`의 jar 경로를 직접 지정합니다.

    <dependencies>
        <!--이미지 처리 관련 JAR-->
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-all</artifactId>
            <version>1.17</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis-ext</artifactId>
            <version>1.3.04</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>xmlgraphics-commons</artifactId>
            <version>2.9</version>
        </dependency>

        <!--엑셀 처리 관련 JAR-->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.13</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
            <version>3.6.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.virtuald</groupId>
            <artifactId>curvesapi</artifactId>
            <version>1.06</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>SparseBitSet</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>3.1.0</version>
        </dependency>

        <!--IBSheet 코어 모듈 (공개 저장소에 없음 → system scope)-->
        <dependency>
            <groupId>ibsheet.ui</groupId>
            <artifactId>ibsheet8</artifactId>
            <version>1.1.1</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ibsheet8-1.1.1.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>ib-itext</groupId>
            <artifactId>ib-itext</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ib-itext.jar</systemPath>
        </dependency>
    </dependencies>

`batik-all`, `poi` 등의 버전은 사용하는 서버 모듈(jar) 버전에 맞춰 조정하세요. IBSheet 코어(`ibsheet8`)와 `ib-itext`의 `version` / `systemPath`도 실제 사용 중인 jar 파일명과 경로에 맞게 지정합니다.

### 서버모듈 확인 방법(엑셀 모듈)

서버에서 jar 파일이 정상적으로 로드되었는지 다음 구문을 통해 확인 할 수 있습니다.

    <%
    System.out.println(com.ibleaders.ibsheet.util.Version.getVersion());
    %>

위와 같이 jsp파일에 입력시 서버에 콘솔창에 다음과 같은 메세지가 나오면 정상입니다.
(각 jar 파일에 버젼 정보를 확인해 주세요.)

    ********************************************************************************
    # ibsheet8-1.1.X
    # IBSheet(H) 8.0.0.0~
    # IBChart(H) 7.3.0.1~
    ********************************************************************************
    Class Info  : org.apache.poi.ss.usermodel.Workbook
    jar path    : /D:/tomcat/tomcat-8.5_servertest/webapps/ibsheet8_demo_test/WEB-INF/lib/poi-4.1.2.jar
    jar Version : Apache POI 4.1.2
    Required Version : POI 3.8 beta3 or later
    ********************************************************************************
    Class Info  : org.apache.poi.ooxml.POIXMLDocument
    jar path    : /D:/tomcat/tomcat-8.5_servertest/webapps/ibsheet8_demo_test/WEB-INF/lib/poi-ooxml-4.1.2.jar
    jar Version : Apache POI 4.1.2
    Required Version : POI 3.8 beta3 or later
    ********************************************************************************
    Class Info  : org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr
    jar path    : /D:/tomcat/tomcat-8.5_servertest/webapps/ibsheet8_demo_test/WEB-INF/lib/poi-ooxml-schemas-4.1.2.jar
    jar Version : Apache POI 4.1.2
    Required Version : POI 3.8 beta3 or later
    ********************************************************************************
    Class Info  : org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook
    jar path    : /D:/tomcat/tomcat-8.5_servertest/webapps/ibsheet8_demo_test/WEB-INF/lib/poi-ooxml-schemas-4.1.2.jar
    jar Version : Apache POI 4.1.2
    Required Version : POI 3.8 beta3 or later
    ********************************************************************************
    Class Info  : org.apache.xmlbeans.XmlBeans
    jar path    : /D:/tomcat/tomcat-8.5_servertest/webapps/ibsheet8_demo_test/WEB-INF/lib/xmlbeans-3.1.0.jar
    jar Version :
    Required Version : XMLBeans 2.3.0 or later
    ********************************************************************************
    POI Core Library file:/D:/tomcat/tomcat-8.5_servertest/webapps/ibsheet8_demo_test/WEB-INF/lib/poi-4.1.2.jar
    POI OOXML Library file:/D:/tomcat/tomcat-8.5_servertest/webapps/ibsheet8_demo_test/WEB-INF/lib/poi-ooxml-4.1.2.jar

3. jsp,aspx 파일

파일명 | 용도
--- | ---
DirectDown2Excel.jsp(aspx) | 엑셀파일 다운로드
DirectLoadExcel.jsp(aspx) | 엑셀파일 업로드
Down2Excel.jsp(aspx) | 엑셀파일 다운로드
Down2Hwpx.jsp | 한글(Hwpx) 파일 다운로드, 닷넷은 지원하지 않음
Down2Text.jsp(aspx) | 텍스트파일 다운로드
Down2Pdf.jsp(aspx) | PDF파일 다운로드
LoadExcel.jsp(aspx) | 엑셀파일 업로드
LoadText.jsp(aspx) | 텍스트파일 업로드

4. 플러그인 파일 include 파일

시트를 이용하여 다운로드/업로드 작업을 할 모든 페이지에는 `/plugins/ibsheet-excel.js` 파일이 인클루드 되어야 합니다.

## 준비 과정

### jsp 파일경로 설정

시트 생성시 Cfg 프로퍼티에 `Export.Url` 속성을 통해 jsp 파일이 위치한 경로를 설정해야 합니다.

    options.Cfg = {
        "Export":{
            "Url":"/assets/ibsheet/jsp"
        }
    }

## 기능 구현

down2Excel이나 loadText함수를 통해 시트의 내용을 다운로드/업로드 하실 수 있습니다.

    sheet.down2Excel({"fileName":"boardList.xlsx","sheetDesign":1,"merge":1});

업로드/다운로드 함수에 대한 자세한 기능은 해당 함수에 대한 메뉴얼 파트를 참고해 주세요.

### Read More

- Export cfg
- DirectDown2Excel method
- DirectLoadExcel method
- down2Excel method
- Down2Hwpx method
- loadExcel method
- down2Text method
- loadText method
- down2Pdf method

### Since

product | version | desc
--- | --- | ---
core | 8.0.0.0 | 기능 추가
core | 8.1.0.85 | Down2Hwpx 기능 추가
excel | 1.1.2 | Down2Hwpx 기능 추가
jar | 1.0.0 | Down2Hwpx 기능 추가