nexacro-xeni는 서버모듈로 제공되며 클라이언트에서 파일 형태로 데이터 처리를 할 때 필요한 기능을 제공합니다. 파일에 포함된 데이터를 그리드 컴포넌트로 가져오거나 그리드에 연결된 데이터를 파일로 내보내는 기능을 처리합니다.
nexacro-xeni는 아래와 같은 파일 형태와 기능을 지원합니다.
파일 형태 | 확장자 | 기능 |
---|---|---|
Microsoft Excel 97-2003 | xls | export / import |
Microsoft Excel 2007/2010 | xlsx | export / import |
CSV format file | csv | import |
HancomOffice Hancell 2010 | cell | export |
HancomOffice Hancell 2014 | cell | export / import |
설치
nexacro-xeni는 자바 기반 서버모듈로 제공되며 버전에 따라 아래와 같이 지원 환경 및 기능이 달라집니다.
nexacro-xeni | JDK version | POI 라이브러리 버전 | 유지보수 |
---|---|---|---|
1.x.x | 1.8 이상 | POI 4.1.2 | 신규, 변경 포함 |
1.4.1 이후 버전은 Jakarta EE 스펙으로 구현된 WAS에서 사용할 수 있는 nexacro-xeni를 제공합니다.
파일명에 "_jakarta_"가 포함된 파일을 내려받아 사용하세요.
https://jakarta.ee/compatibility/
기술지원 사이트 메뉴 PRODUCT > Nexacro N> Download > Server [API, XENI]에서 war 파일이 포함된 압축 파일을 내려받을 수 있습니다.
http://support.tobesoft.co.kr/Support/?menu=Download_N
제공된 war(Web application ARchive) 파일을 직접 배치하거나 war 파일의 압축을 풀어 필요한 파일을 WAS의 /WEB-INF/lib 디렉터리 또는 정의된 클래스 경로에 복사해 사용할 수 있습니다.
war 파일을 직접 배치하지 않고 압축을 풀어 복사하는 경우에는 라이브러리 버전 차이로 문제가 발생할 수 있습니다.
nexacro-xeni는 Apache POI 라이브러리를 사용합니다. 자세한 Apache POI 설명은 아래 링크를 참고해주세요.
nexacro-xeni가 동작하려면 X-API가 설치되어 있어야 합니다. 설치 항목을 참고해주세요.
기존 컨텍스트에 파일을 복사한 경우에는 아래 내용을 web.xml 파일에 추가해주어야 합니다.
<servlet> <servlet-name>XExportImport</servlet-name> <servlet-class>com.nexacro.java.xeni.services.GridExportImportServlet</servlet-class> </servlet> <servlet> <servlet-name>XImport</servlet-name> <servlet-class>com.nexacro.java.xeni.services.GridExportImportServlet</servlet-class>class> </servlet> <servlet-mapping> <servlet-name>XExportImport</servlet-name> <url-pattern>/XExportImport</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XImport</servlet-name> <url-pattern>/XImport</url-pattern> </servlet-mapping> <context-param> <param-name>export-path</param-name> <param-value>/export</param-value> </context-param> <context-param> <param-name>import-path</param-name> <param-value>/import</param-value> </context-param> <context-param> <param-name>monitor-enabled</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>monitor-cycle-time</param-name> <param-value>30</param-value> </context-param> <context-param> <param-name>file-storage-time</param-name> <param-value>10</param-value> </context-param>
설치 확인
정상적으로 배치 또는 복사되었다면 아래 URL을 웹브라우저에서 열어 메시지가 정상적으로 나타나는지 확인합니다.
http://127.0.0.1:8080/XExportImport
URL은 설치 경로에 따라 달라질 수 있습니다. war 파일을 직접 배치한 경우 URL은 아래와 같습니다.
http://127.0.0.1:8080/nexacro-xeni-java/XExportImport
주요 설정
서블릿 컨텍스트에 파라미터로 설정된 주요 항목은 아래와 같습니다.
이름 | 기본값 | 설명 |
---|---|---|
export-path | /export | 내려받을 파일을 임시로 저장하는 경로를 지정합니다. |
import-path | /import | 그리드 컴포넌트로 가져올 파일을 임시로 저장하는 경로를 지정합니다. monitor-enabled 설정값이 true인 경우에는 데이터 처리 후 바로 삭제합니다. |
monitor-enabled | true | 파일 매니저 실행 여부를 지정합니다. false로 지정한 경우에는 파일 매니저가 동작하지 않고 임시 파일을 삭제하지 않습니다. |
monitor-cycle-time | 30 | 임시 저장된 내려받을 파일을 삭제하는 주기를 '분' 단위로 설정합니다. 해당 주기로 파일 매니저를 실행해 삭제할 파일을 체크하고 삭제 처리합니다. |
file-stroage-time | 10 | 임시로 저장한 내려받을 파일을 보관하는 시간을 '분' 단위로 설정합니다. 파일 매니저 실행 시 생성 후 지정된 시간이 지난 파일은 삭제합니다. |
자세한 내용은 배포되는 war 파일에 포함된 readme.txt 파일을 참고하세요.
예제
간단한 데이터 처리 예제를 설명합니다. 세부적인 속성이나 메소드, 이벤트는 도움말에서 아래 항목을 참고하세요.
Objects > Misc. Objects > ExcelExportObject
Export
그리드 컴포넌트에 바인딩된 데이터를 서버로 전송해 파일로 생성하고 생성된 파일을 내려받습니다. 아래 예제에서는 Grid00 컴포넌트에 바인딩 된 데이터를 파일로 생성하고 내려받습니다.
this.Button00_onclick = function(obj:Button, e:nexacro.ClickEventInfo) { this.exportObj = new ExcelExportObject(); var ret = this.exportObj.addExportItem(nexacro.ExportItemTypes.GRID, this.Grid00, "Sheet1!A1"); this.exportObj.set_exporturl("http://localhost:8080/XExportImport"); this.exportObj.exportData(); }
Import
사용자가 가지고 있는 파일을 서버로 전송해 데이터셋으로 변환합니다. 사용자는 변환된 데이터셋을 내려받아 업무를 처리합니다.
this.Button00_onclick = function(obj:Button, e:nexacro.ClickEventInfo) { this.importObj = new ExcelImportObject("Import00",this); this.importObj.addEventHandler("onsuccess", this.Import_onsuccess, this); this.importObj.set_importurl("http://localhost:8080/XExportImport"); this.importObj.importData("","output=ds","Dataset00=ds"); } this.Import_onsuccess = function(obj,e) { this.Grid00.createFormat(); }