설치

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 설명은 아래 링크를 참고해주세요.

https://poi.apache.org/

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();
}