개발로 부자되기

nodejs XLSX 라이브러리, 엑셀 라이브러리 사용방법

야나부짱 2023. 3. 10. 01:51

xlsx 라이브러리는 Excel 파일을 읽고 쓰고 조작할 수 있는 Node.js 모듈이다. js-xlsx 라이브러리 위에 구축되어 있으며, 간단하고 사용하기 쉬운 API를 제공한다. xlsx를 사용하면 다음과 같은 Excel 파일 관련 작업을 수행할 수 있습니다.

  • XLSX, XLSB, XLS, CSV, TXT 등 다양한 형식의 Excel 파일을 읽고 쓰기
  • Excel 파일에서 셀, 행, 열 및 워크시트와 같은 데이터를 파싱하고 처리하기
  • Excel 파일에서 데이터를 수정하고 조작하기, 셀, 행, 열 및 워크시트를 추가, 삭제 및 업데이트하기
  • 새로운 Excel 파일 생성 또는 기존 파일에 새로운 데이터 또는 서식 추가하기
  • Excel 파일에서 공식 및 함수를 사용하기, 공식을 계산하고 평가하기

xlsx 라이브러리는 저수준 API인 js-xlsx 라이브러리에 대한 고도의 추상화 수준을 제공하므로, 파일 형식의 세부 정보나 js-xlsx의 저수준 API에 대한 자세한 이해 없이도 Node.js에서 Excel 파일을 쉽게 다룰 수 있다. 또한, xlsx는 동기 및 비동기 I/O 모두 지원하므로 사용 사례에 따라 최적의 방법을 선택할 수 있다. 전반적으로, xlsx 라이브러리는 Node.js에서 Excel 파일을 다루는 강력하고 유연한 도구이며, 데이터 처리, 금융 분석 및 보고서 작성 등 다양한 응용 분야에서 널리 사용된다.

 

직접 사용해봤는데, 사용해보면서 느낀건 이 라이브러리를 활용하면 엑셀에서는 하기 힘든 내용들을 뽑아낼 수 있다. 데이터 양이 많을수록 코드로 처리하는게 훨씬 편하다. 그리고 내가 원하는 형식/포맷으로 출력할수도 있다. 혹은 엑셀에서 읽은 데이터를 바탕으로 api 호출이 필요할때 이 라이브러리를 활용하면 좋다. 

 

xlsx 설치는 쉽다. 

npm install --save xlsx

 

파일 읽기도 쉽다. xlsx 객체하나 만들고 readFile을 한다. workbool에는 각 시트 정보가 들어가며, 각 시트에서 행으로 읽을 수있다. 코드를 실행하는위치에 파일을 두면 경로를 적지않고 읽을 수 있다.

var XLSX = require("xlsx");
var workbook = XLSX.readFile("tx_list.xlsx");

 

특정 시트 읽기

this.name에 해당하는게 시트의 이름이다. 시트를 읽고, 그걸 json으로 만들 수 있다.

        var worksheet = workbook.Sheets[this.name];
        var json_ = XLSX.utils.sheet_to_json(worksheet, { header: 1 })
        this.info = json_;

 

 

예륻들어 엑셀파일에서 user_name을 뽑고 싶은 경우이다. 읽은 json을 갖고, 거기서 user name을 뽑아내는 것을 했다. 아래와 같은 코드로 뽑아낼 수 잇다.

    get_user(except_mem=[]) {
        for (const info_ of this.info) {
            this.users.add(info_[0])
        }
        console.log(this.users);
    }

예시로 위의 엑셀시트 'test'를 읽어보겠다. 보면 각 행이 하나의 배열값임을 볼 수 있다. 쉽죠?

class tx_info {

    name = '';
    info = [];

    users = new Set();

    constructor(name) {
        this.name = name;
        this.read_excel();
    }

    read_excel() {
        var worksheet = workbook.Sheets[this.name];
        var json_ = XLSX.utils.sheet_to_json(worksheet, { header: 1 })
        this.info = json_;
    }
}​


var main = new tx_info('test');
console.log(main.info.length)
console.log(main.info[0])
console.log(main.info[1])
console.log(main.info[2])
console.log(main.info[3])