-
[Side Project] 두 번째 프로젝트, Excel UpdaterDraft 2020. 6. 21. 01:08반응형
다수의 엑셀을 한 번에 수정하는 데스크탑 어플리케이션 서비스 제작
1. 기획이유
잠깐 집 근처 커머스 업체에서 사무보조 아르바이트를 하고 있었는데, 어쩌다보니. 간단한 어플리케이션을 개발하는 업무를 해줄 수 있냐는 제의를 받게 되었고. 업무가 어플리케이션 개발로 바뀌게 되었다. 대부분의 업무들이 단순 반복적인 업무가 많았기에. 이를 조금 더 빠르고 쉽게 도울 수 있는 프로그램들이 필요해 보였고, 그 중에서도 엑셀 작업이 상당히 귀찮고 많아보이길래. 다수의 엑셀 파일을 수정하는 어플리케이션을 만들고자 하였다.
2. 요구사항 정의
일단, 업무가 어떻게되는지 모르는터라. 대충 요구사항만을 듣고 바로 기획하고 개발했었는데, 문제가 많았다. A 같은 기능을 원하는 줄 알았는데, 막상 개발하고 보여드리니. B 같은 기능을 원하셨다. 세밀한 분석 없이. 빠르게 기획/개발을 해서 그런지 이런 문제가 발생했다. 단순 아르바이트라 생각하고 대충 진행했더니 이렇게 된 것 같다. 암튼. 그 이후로는 마음을 고쳐먹고 어떤 업무인지 제대로 파악하고 개발을 해 지금은 완성 단계에 이르렀다.
요구사항은 다음과 같다. 1) N개의 엑셀 파일을 한 번에 수정할 수 있는 프로그램이어야 하고, 2) 파일 단위 접근과 폴더 단위 접근이 가능해야 한다. 3) 기능으로는 한 열의 전체 값 변경하기, 셀에 있는 특정 값 찾아 다른 값으로 변환하기, 셀 내의 중복 단어 제거하기가 가능해야했고, 4) .xlsx(최신버전) / .xls(excel 97-2003 버전)으로 저장할 수 있어야 했다.
3. 개발구조
데스크탑 어플리케이션을 개발하기 위하여, Electron을 사용했다. Electron은 Chromium과 Node.js를 사용하여 직접 설치하고 사용할 수 있는 어플리케이션을 개발할 수 있게하는 프레임워크이다. 거기다 프론트엔드에서는 Vue.js를 사용하여 개발하였다. 매번 개발환경을 세팅할 때 어려움이 많았는데, Electron에서는 electron-builder를 제공해주어. 쉽고 간편하게 세팅할 수 있었다.
excel 파일을 생성/수정/저장하기 위해 sheetjs의 xlsx 라이브러리를 이용하였는데, 기능들도 만족스러웠고, 사용하기 간편하였다. 그러나, .xlsx를 생성함에 있어서는 전혀 문제가 없었는데, .xls(excel 97-2003 버전)을 다룸에 있어서 몇몇 문제들이 발생하였다. .xls 파일을 다룰 때, 문자열 길이가 255자를 넘질 못한다는 이슈였는데, 계속 고민해보고 수정해봐도 방법이 나오질 않아. .xls 파일에 한해서만 다른 라이브러리를 사용했다.
.xls 파일은, xlgen 라이브러리를 사용하였고, sheetjs의 xlsx보다 파일 생성 속도가 많이 느렸기에. 조금 아쉬웠지만. 그래도 해당 라이브러리를 사용해 해결할 수 있었다.
그리고 또, 하나의 문제가 더 있었는데. xlsx 라이브러리의 readFile 함수는 node.js나 extendscript와 같은 server side에서만 작동하였기에, express 라이브러리를 추가해주었다. 사실 electron의 구조가 어떤지 몰라. 대충 다른 포트를 열어서 서비스의 http 요청들이 해당 포트로 넘어가도록 했다. 이를 위해 cors 설정도 해주어야했고. express의 코드가 들어간 파일을 background.js에서 실행시켰다. 이게 맞는 방법인지는 모르겠지만. 어쨌든 작동은 한다. 이 부분은 추후에 더 자세히 알아봐야겠다.
개발된 모습은 다음과 같다. vuetify를 통해 쉽게 UI를 구성해봤다.
4. 결론
데스크탑 어플리케이션을 만들어본건 처음이지만. 나름 사용하기 간편하고 쉬웠던 것 같다. 그리고. 로컬 내 파일들을 수정하는 작업아 약간 까다로웠는데. 이해없이 라이브러리에 의존하여 진행했기에 그런 것 같다. 뭐 엑셀 파일을 생성하니. 다른 편집자가 수정 중이라며 액세스가 제한되기도 하고. 파일이 손상되기도 하고. 신뢰할 수 있는 문서가 아니라는 등 많은 오류를 해결하느라 시간이 좀 걸렸다. 다음부터 개발할 때는 조금 더 공부를 많이하고 시작해야겠다!
반응형'Draft' 카테고리의 다른 글
[Side Project] 네 번째 프로젝트, CateSearch (0) 2020.07.27 [Side Project] 세 번째 프로젝트, Store Uploader (0) 2020.07.22 [Side Project] 첫 번째 프로젝트, 코로나19 퀴즈 (0) 2020.05.10 [Side Project] 사이드 프로젝트를 하는 이유에 대해서 (0) 2020.05.10 파나소닉 PR챌린지 참여했던 기억 (0) 2020.04.04