설치

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.0.0

1.5 이상

POI 3.10

버그 수정만 지원

2.x.x

1.8 이상

POI 4.1.2

신규, 변경 포함

2.5.4 이후 버전은 Jakarta EE 스펙으로 구현된 WAS에서 사용할 수 있는 nexacro-xeni를 제공합니다.

파일명에 "_jakarta_"가 포함된 파일을 내려받아 사용하세요.

https://jakarta.ee/compatibility/

기술지원 사이트 메뉴 PRODUCT > nexacro 17> Download > Server [API, XENI]에서 war 파일이 포함된 압축 파일을 내려받을 수 있습니다.

http://support.tobesoft.co.kr/Support/?menu=Download_17

제공된 war(Web application ARchive) 파일을 직접 배치하거나 war 파일의 압축을 풀어 필요한 파일을 WAS의 /WEB-INF/lib 디렉터리 또는 정의된 클래스 경로에 복사해 사용할 수 있습니다.

war 파일을 직접 배치하지 않고 압축을 풀어 복사하는 경우에는 라이브러리 버전 차이로 문제가 발생할 수 있습니다.

nexacro-xeni는 Apache POI 라이브러리를 사용합니다. 자세한 Apache POI 설명은 아래 링크를 참고해주세요.

https://poi.apache.org/

nexacro-xeni가 동작하려면 X-API가 설치되어 있어야 합니다. 설치 항목을 참고해주세요.

기존 컨텍스트에 파일을 복사한 경우에는 아래 내용을 web.xml 파일에 추가해주어야 합니다.

<servlet>
	<servlet-name>XExportImport</servlet-name>
	<servlet-class>com.nexacro17.xeni.services.GridExportImportServlet</servlet-class>
</servlet>	
<servlet>
	<servlet-name>XImport</servlet-name>
	<servlet-class>com.nexacro17.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/nexacro17-xeni/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();
}