안녕하세요. IT Window 킷도우입니다.
연말이라 진급, 연봉인상, 성과급 등 회사에서 각가지 이슈들이 정말 많은데요. 여러분들 모두 좋은 결과 있으시길 기원하면서 오늘도 여러분들에게 도움될 만한 글을 하나 써 봅니다.
오늘 소개해 드릴 글은 바로 넥사크로 N 에서 엑셀 다운로드하는 방법입니다. 회사에서는 정말 밥 먹듯이 쓰는 기능인데요. 워낙 현업에서 Raw데이터 또는 통계 데이터를 전산에서 뽑는 일이 비일비재 하다 보니 그 만큼 개발도 많이해봐서 일도 아닌 일인데... 집에서 로컬 개발 환경 세팅하고 엑셀 다운로드 기능을 테스트하니 엑셀 파일은 만들어지는데 안에 내용이 빈 채로 0kb파일이 만들어저 너무 당황스러웠습니다. 이것 때문에 한 4시간은 쓴 것 같은데요 ㄷㄷ여러분들은 바로 쉽게 개발할 수 있도록 바로 본론 들어 가겠습니다.
※ 아래 이미지에서 엑셀 다운로드 버튼을 클릭했을 때 가운데 그리드에 있는 모든 데이터가 엑셀로 다운로드되는 기능을 개발하도록 하겠습니다.
1. 넥사크로 엑셀 다운로드 기능 구현을 위한 버튼 만들기
엑셀 다운로드 기능을 사용자들에게 제공해 주기 위해서는 아래 이미지와 같이 "엑셀 다운로드" 버튼을 하나 만들어 줘야 합니다.
넥사크로에서 버튼을 생성하는 방법은 아래 링크를 참조하시면 자세히 확인하실 수 있습니다.
[넥사크로 컴포넌트 실습] 넥사크로에서 버튼 만들기(Nexacro Button 생성, Visible, Enable 설정, ID 명명
안녕하세요. IT Window 킷도우입니다. 한 해가 정말 얼마 남지 않았는데요. 마무리들은 잘 하고 계신가요? 열심히 사는 것도 중요하지만 난 그냥 이 지구에 놀러온 여행자다. 회사 생활, 부업, 인간
kitdow.tistory.com
2. "엑셀 다운로드" 버튼 클릭시 동작하는 이벤트 함수 만들기
엑셀 다운로드 버튼 클릭시 동작하는 이벤트를 만들어줍니다.
this.btn_exelDown_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
//엑셀 다운로드 기능 구현
};
3. gfnExcelExport 공통 함수를 이용하여 엑셀 다운로드 기능을 구현하자
this.btn_exelDown_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
//그리드에 데이터가 있는지 체크해서 없다면 alert 띄워주기
if(this.ds_list.getRowCount() == 0 )
{
alert("데이터가 존재하지 않습니다.");
return;
}
this.gfnExcelExport(this.grd_ordList //그리드 객체 입력
,"Sheet1" //엑셀 시트명 입력(생략 가능, 특수문자 사용 불가)
,"주문리시트 엑셀파일"); //엑셀 파일명 입력
};
4. 결과 확인
엑셀 다운로드 버튼 클릭시 위 이미지처럼 저장할 경로를 지정하는 팝업이 나오고 저장을 누르면 엑셀이 아래 이미지와 같이 정상적으로 저장됩니다.
※ 내가 4시간 동안 삽질한 이유...
처음엔 아무리 위 소스대로 해도 엑셀 파일은 만들어지는데 파일이 0kb로 만들어저 구글링을 시작했고, 각가지 방법들을 적용해 봤습니다.
1) tobesoft 기술지원 홈페이지에서 nexacro-xeni.war파일을 다운로드하여 /WEB-INF/lib 폴더에 위치시키고 재기동 해봤습니다. 이 위치가 아닌가 싶어 여기저기 war파일들을 넣어 테스트해 봤습니다.
2) 그래도 안돼서 war파일의 압축을 풀고 jar파일들을 Eclipse에서 External Library를 추가해줬습니다.
포기할까... 하며 소스를 분석하던 중.. 혹시?? 하고 아래 부분을 수정해 줬습니다.
TypeDefinition > Services > svcurl 여기가 바로 프로젝트의 root경로입니다. 근데 이게 http://localhost:8080/orderBoard로 돼있어서 수상하다 싶어 http://localhost:8080/ 로 변경했더니... 드디어 다운로드가 되더군요. 혹 넥사크로와 스프링을 연동했는데 톰캣에서는 root경로를 /로 세팅했는데, 그럼에도 불구하고 /orderBoard 처럼 프로젝트 명이 root에 들어갔다면 svcurl을 수정해주시면 됩니다! 추가로, Contoller.java에서 RequestMapping 시 /orderBoard라고 작성한 부분들은 전부 /로 교체해 줘야겠죠?
이는 뭔가 넥사크로 엑셀 다운로드/업로드 기능 관련 lib 내 처리 경로가 /로 지정돼 있어서 그런게 아닌가 싶은데요. 이 사실 꼭 캐치하셔서 넥사크로 N 엑셀 다운로드/업로드 기능을 구현하셨으면 좋겠습니다.
오늘도 여러분들에게 작은 도움됐길 바라면서 이만 글을 마치겠습니다.
★킷도우 웹 개발 기초 강의가 오픈됐습니다!
궁금하신 분들은 아래 링크를 참고해 주세요~
킷도우의 첫 강의! - 웹 개발 기초 (프론트엔드, 백엔드, DB까지 총 10시간에 걸쳐 주문 게시판 만
안녕하세요. IT Window 킷도우입니다. 드디어 고대하고 고대하던 웹 개발 강의를 완성했습니다. VOD(동영상)는 인프런에서만!(전자책 포함) https://inf.run/BqmE 실무 환경 그대로 주문게시판 만들기 웹
kitdow.tistory.com
감사합니다!
댓글