어흥

[Nexacro] Excel Upload(범위 지정 가능) 본문

Nexacro

[Nexacro] Excel Upload(범위 지정 가능)

라이언납시오 2020. 8. 4. 08:04
728x90
반응형

[기본적인 코드]

  if(!this.Import00)
  {
   this.importObj = new ExcelImportObject("Import00",this);
   this.addChild("Import00", this.importObj);                                          //속성 지정
   this.importObj.set_importfilemode("local");  
   this.importObj.set_importtype(nexacro.ImportTypes.EXCEL2007);
   this.importObj.set_importurl("DataSrv::XImport.hd");               //동적으로 이벤트 연결
   this.importObj.addEventHandler("onsuccess", this.fn_excel_successII, this);
   this.importObj.addEventHandler("onerror", this.fn_excel_onerror, this);
  }
  this.importObj.importData("", "Body=Sheet1!A2", "gv_excel_grid00" ,"");

위의 코드에서 If문 안에 있는 내용들은 기본적으로 Nexacro 개발문서에 존재하므로 참고한다.

 

마지막 줄에 위치한 문장에 따라 Excel에서 추출할 범위를 정할 수 있다. Nexacro Platform에서 F1을 누르고 ImportData를 찾으면 대략적인 내용이 나온다.

 

중요한 부분은 2번째 매개변수 "Body=Sheet1!A2" 이쪽이다. 해당 부분을 수정하여 특정 위치의 엑셀 파일에서의 데이터를 불러올 수 있다.

!를 기준으로 좌측은 Excel에서 어떤 Sheet를 참조할 것인지 나타낸다

!를 기준으로 우측은 Excel에서 어디 범위만큼 참조할 것인지 나타낸다. 현재는 A2이므로 A2기준 우측하단 방향에 위치한 데이터들을 모두 불러온다

 

Ex) Body=Sheet1!A2:F6 -> Sheet1에서 A2~F6사이에 위치한 모든 데이터들을 가져온다. 단, 여기서 주의해야 할 부분은 엑셀에서 표시되는것과 달리, 가장 위의 행이 0이라는 점이다

 

※추가적인 내용(중요)

엑셀 업로드 이후 특정 함수 A를 수행하고 싶을 때, 위의 코드 밑에 특정 함수 A를 작성할 경우 정상적으로 작동이 되지 않는다.

그 이유로는 엑셀 업로드가 비동기식으로 진행되기 때문이다. 그렇다면 엑셀 업로드 -> A 함수 수행하고 싶을땐 어떻게 해야 하는가?

 

정답은 코드에 나와있다.

this.importObj.addEventHandler("onsuccess", this.fn_excel_successII, this);

위 코드의 경우 Excel 업로드가 성공적으로 이루어졌을 때 수행되는 Event다. 따라서 2번째 인자인 fn_excel_successII() 함수에 A 함수를 수행하도록 설정하면 된다

728x90
반응형

'Nexacro' 카테고리의 다른 글

[Nexacro] Grid + Expression  (0) 2020.08.06
[Nexacro] Filter 사용  (0) 2020.07.30
[Nexacro] Grid 응용 + 화면 Tip  (0) 2020.07.16
Comments