exceljs 이용하여 excel파일 생성하기

정태영·2022년 3월 12일
3
post-thumbnail

안녕하세요, 정태영입니다.
오늘은 데이터를 엑셀로 추출할 수 있는 exceljs에 대해 알아 보겠습니다!!

exceljs


exceljs는 javascript에서 데이트를 엑셀로 추출하고 조작할 수 있는 라이브러리입니다.
관리자페이지에서 엑셀로 추출할 수 있고, db에 있는 데이터를 불러와 활용도 가능합니다.

데이터 예제

const fruits = [
  {
    name: "오렌지",
    price: "10000"
   	calorie: 85.8
  },
  {
    name: "딸기",
    price: "6000"
   	calorie: 54.8
  },
  {
    name: "포도",
    price: "4600"
   	calorie: 90.8
  },
]

코드 예제

import { Workbook } from 'exceljs';
// 숫자 콤마 붙이기
const comma = (number) => {
	number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
}

router.get('/fruits', async (req, res) => {
  const workbook = new Workbook();
  const sheet = workbook.addWorksheet('');

  const excelData = [];
  for (let i = 0; i < fruits.length; i += 1) {
    const { name, price, calorie } = fruits[i];
    excelData.push([name, comma(price), `${calorie}kcal`]);
  }

  sheet.mergeCells('A1:C1');
  sheet.getCell('A1').value = '과일 리스트';
  sheet.getCell('A1').font = { size: 14, bold: true };
  sheet.getCell('A1').alignment = { horizontal: 'center' };
  sheet.getCell('A1').fill = {
    type: 'pattern',
    pattern: 'solid',
    fgColor: { argb: 'FFFFFF00' },
    bgColor: { argb: 'FF0000FF' },
  };

  sheet.getRow(2).values = ['과일이름', '가격', '칼로리(kcal)'];

  // 엑셀 리스트 삽입
  sheet.addRows(excelData);
  helper.excelSizeing(sheet);

  res.setHeader('Content-Type', 'application/vnd.openxmlformats');
  res.setHeader('Content-Disposition', `attachment; filename=과일리스트.xlsx`);
  await workbook.xlsx.write(res);
  res.end();
});

Data를 exceljs의 데이터 형식의 맞게 변환 해주었습니다.
addRows(excelData)에 이중 배열로 넣어줍니다.

[
	['셀 데이터1', '셀데이터2'], // 첫번 째 열
    ['셀 데이터1', '셀데이터2'], // 두번 째열
]

첫번 째 열은 제목을 넣기 위해,
mergeCells이용하여 셀을 병합 해줍니다.

A1에 제목이 들어가 있기 때문에 다음열에 addRows 이용하여 마지막 데이터가 있는 밑에 추가 합니다.

주로 사용되는 유용한 Exceljs 함수들

  • addWorksheet('NAME') : 시트 생성 및 추가
  • mergeCells('A1:C1') : 셀 병합 (A1-A3처럼 셀 지정할 수 있습니다.)
  • getCell('A1') : 셀 받아오기 (value, font, fill 등 셀 조작이 가능합니다.)
  • getRow(5) : 열 받아오기 (values이용하여 value를 각각 넣어 줄 수 있습니다.)
    이외에 더 많은 함수 및 속성은 Exceljs을 참고 바랍니다.

마무리 🤗

exceljs이용하여 간단한 excel데이터로 출력 하였습니다.
간단하지만 조금이라도 도움이 되었으면 좋겠습니다.

감사합니다.

참고자료

profile
풀스택으로 개발하고 공부하고 있습니다. 감사합니다.

9개의 댓글

comment-user-thumbnail
2022년 3월 24일

test

1개의 답글