728x90
반응형
SMALL
Node.js에서 Excel 파일을 다뤄야 할 일이 생기면 가장 먼저 고민되는 게 바로 라이브러리 선택입니다. 오늘은 대표적인 Excel 관련 라이브러리들의 특징, 그리고 가장 널리 쓰이는 xlsx (SheetJS)의 사용법과 예제, 언제 사용하면 좋은지까지 한눈에 정리해봤습니다.
주요 Excel 라이브러리 비교
라이브러리 | 특징 | 장점 | 단점 | 설치 |
xlsx (SheetJS) | 가장 널리 쓰이는 라이브러리 | 다양한 포맷 지원 (.xls, .xlsx, .csv, 등), 안정성 높음 | 복잡한 Excel 서식(차트, 수식 등)은 제한적 | npm install xlsx |
exceljs | .xlsx 전문 | 스타일링, 수식, 머지 셀 등 UI 처리 가능 | .xls(구버전) 미지원 | npm install exceljs |
node-xlsx | 경량화된 xlsx wrapper | 빠르고 가볍고 간단 | 고급 기능 부족 | npm install node-xlsx |
csv-parser / fast-csv | CSV 전용 처리 | 매우 빠름, 스트리밍 처리에 강함 | Excel 서식 불가 | npm install csv-parser |
복잡한 Excel 서식이 필요하면 exceljs, 일반적인 데이터 변환에는 xlsx가 가장 무난합니다.
xlsx (SheetJS) - 가장 인기 있는 엑셀 라이브러리
언제 사용하면 좋을까?
- Excel 파일을 읽어서 JSON으로 변환하거나,
- JSON 데이터를 Excel로 저장해야 할 때
- .csv, .xls, .xlsx 등 다양한 포맷을 다뤄야 할 때
- 브라우저와 Node.js 양쪽에서 동일하게 사용할 수 있어야 할 때
설치
npm install xlsx
기본 사용법 예제
엑셀 파일 읽기 (.xlsx, .csv 등)
const XLSX = require('xlsx');
const workbook = XLSX.readFile('data.xlsx'); // or .csv
const sheetName = workbook.SheetNames[0];
const sheet = workbook.Sheets[sheetName];
// 2차원 배열로 읽기
const rows = XLSX.utils.sheet_to_json(sheet, { header: 1 });
console.log(rows);
JSON → Excel 파일로 저장하기
const XLSX = require('xlsx');
const data = [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 30 }
];
const worksheet = XLSX.utils.json_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, "Users");
XLSX.writeFile(workbook, 'output.xlsx');
고급 기능
헤더 행 지정하여 JSON 변환
const rows = XLSX.utils.sheet_to_json(sheet, { header: 1 });
const header = rows[2]; // 예: 3번째 행을 헤더로
const dataRows = rows.slice(3);
const json = dataRows.map(row => {
const obj = {};
header.forEach((key, i) => obj[key] = row[i]);
return obj;
});
CSV 읽기 & 쓰기
const workbook = XLSX.readFile('data.csv');
const sheet = workbook.Sheets[workbook.SheetNames[0]];
const json = XLSX.utils.sheet_to_json(sheet);
포맷 지원
포맷읽기쓰기
포맷 | 읽기 | 쓰기 |
.xlsx | 가능 | 가능 |
.xls | 가능 | 가능 |
.csv | 가능 | 가능 |
.ods | 가능 | 가능 |
.json | 가능 | 가능 |
마무리 – 어떤 걸 언제 쓰면 좋을까?
- 단순한 데이터 파일 읽기/쓰기: xlsx
- 스타일, 수식, 서식 등 정교한 엑셀 생성: exceljs
- 빠른 CSV 처리 & 대용량 스트리밍: csv-parser, fast-csv
- 테스트용 가볍게 쓰기: node-xlsx
엑셀 자동화를 위한 E2E 테스트 시나리오, CSV 로그 분석, IoT 센서 데이터 추출 등 다양한 활용에 쓰일 수 있습니다.
728x90
반응형
LIST
'Node.js' 카테고리의 다른 글
[Node.js] Node.js에서 MSSQL 데이터베이스 연결하기 (0) | 2025.06.20 |
---|---|
[Node.js] 실시간 진행 상황을 사용자에게 보여주기 – SSE(Server-Sent Events) 적용기 (0) | 2025.06.16 |
[Node.js] 미들웨어란? (0) | 2025.05.28 |
[Node.js] Node.js Express 기본 및 주요 모듈 정리 (0) | 2025.05.20 |
[Node.js] Node.js란? 자바스크립트가 브라우저 밖으로 나온 이유 (0) | 2025.04.29 |