Excel 파일에 데이터를 쓰기 위한 오픈 소스 Node.js 라이브러리
간단한 API를 제공하여 .xlsx (Excel) 파일을 생성하고 스트리밍 방식으로 Excel 파일에 데이터를 쓰기 위한 전용 오픈 소스 Node.js Excel XLSX 라이브러리.
Node-XLSX-Writer란 무엇인가요?
Node.js 개발 분야에서는 보고서를 생성하고 데이터를 내보내는 것이 일반적인 요구 사항입니다. exceljs와 같은 강력한 라이브러리가 존재하지만, 때때로 하나의 작업에만 초점을 맞춘 솔루션이 필요합니다; 기존 파일을 읽거나 조작하는 오버헤드 없이 빠르고 효율적으로 XLSX 파일을 쓰는 것입니다. 바로 이러한 목적을 위해 정확히 설계된 가볍고 직관적인 라이브러리인 Node-XLSX-Writer가 등장합니다. 이 라이브러리는 단순함과 집중된 기능으로 돋보입니다. 읽기, 쓰기, 조작을 모두 처리하는 포괄적인 Excel 라이브러리와 달리, 이 모듈은 XLSX 파일 쓰기에만 전념하여 경량화되고 배우기 쉬우며 구현이 빠르고 신뢰할 수 있습니다.
Node-XLSX-Writer는 Node.js 애플리케이션에서 XLSX (Excel) 파일을 생성하도록 특별히 설계된 가볍고 직관적인 라이브러리입니다. Excel의 서식 및 다중 시트 지원(간단한 API를 통해)을 추가한 CSV와 같은 내보내기 작업을 수행할 때 코드가 깔끔하고 애플리케이션의 메모리 사용량이 적게 유지됩니다. Ruben Vermeersch가 만들고 샘플 XLSX 파일을 역공학한 이 모듈은 개발자에게 복잡한 대형 Excel 조작 라이브러리 없이도 데이터를 Excel 형식으로 내보내는 간단하면서도 효과적인 방법을 제공합니다. 이는 데이터베이스나 API에서 대용량 보고서를 생성해야 하는 애플리케이션에 이상적인 선택이며, 스트리밍 방식 덕분에 방대한 데이터셋에서도 메모리 사용량을 낮게 유지합니다.
Node-XLSX-Write 시작하기
Node-XLSX-Writer를 설치하기 전에 시스템에 libzip 개발 라이브러리가 설치되어 있어야 합니다. 이 라이브러리는 zip 파일을 생성하기 위해(실제로 XLSX 파일은 압축된 XML입니다) 이러한 네이티브 바인딩에 의존합니다. 성공적인 설치를 위해 다음 명령을 사용하십시오.
npm을 통해 Node-XLSX-Write 설치
npm install --save xlsx-writerGitHub 저장소에서 컴파일된 공유 라이브러리를 다운로드하여 설치할 수 있습니다.
Node.js에서 Excel XLSX 스프레드시트 생성
오픈 소스 Node-XLSX-Writer 라이브러리는 Node.js 애플리케이션 내에서 Excel XLSX 파일을 생성하고 다루는 기능을 포함하고 있습니다. 이 라이브러리는 Microsoft Excel이나 COM 상호 운용을 필요로 하지 않으며, XLSX 파일(본질적으로 XML 파트들의 ZIP 파일)을 프로그래밍 방식으로 구성합니다. 따라서 서버 사이드 Node.js 사용에 적합합니다. 다음 코드 예제는 일부 데이터를 사용해 Excel 파일을 만드는 가장 간단한 방법을 보여줍니다.
Node.js 앱 내에서 Excel XLSX 파일을 생성하는 방법?
// Import the library
const XLSXWriter = require('node-xlsx-writer');
// 1. Create a new instance, specifying the output file path.
const xlsx = new XLSXWriter('./output/simple_report.xlsx');
// 2. Write the header row (optional, but recommended).
xlsx.writeRow(['Name', 'Email', 'Sign-Up Date']);
// 3. Write some data rows.
xlsx.writeRow(['Alice Smith', 'alice@example.com', '2023-10-25']);
xlsx.writeRow(['Bob Johnson', 'bob.j@domain.com', '2023-10-26']);
xlsx.writeRow(['Charlie Brown', 'charlie@brown.com', '2023-10-27']);
// 4. Finalize the file. This step is crucial to save the file properly.
xlsx.finalize();
console.log('Excel file created successfully!');
대용량 데이터 셋을 위한 스트리밍
Node-XLSX-Writer가 진정으로 빛을 발하는 부분입니다. 모든 데이터를 메모리에 로드하는 대신, 행을 하나씩 스트리밍할 수 있습니다. 이는 데이터베이스 쿼리 결과를 처리하기에 완벽합니다. 라이브러리는 데이터베이스에서 각 레코드를 내보내는 함수를 사용하며, 우리는 이를 즉시 Excel 파일의 새 행으로 기록합니다. 이 접근 방식은 100행을 내보내든 100만 행을 내보내든 메모리 사용량을 일정하게 유지합니다.
Node.js 앱 내에서 데이터베이스 스트리밍을 수행하는 방법?
// Import the library
const XLSXWriter = require('node-xlsx-writer');
// 1. Create a new instance, specifying the output file path.
const xlsx = new XLSXWriter('./output/simple_report.xlsx');
// 2. Write the header row (optional, but recommended).
xlsx.writeRow(['Name', 'Email', 'Sign-Up Date']);
// 3. Write some data rows.
xlsx.writeRow(['Alice Smith', 'alice@example.com', '2023-10-25']);
xlsx.writeRow(['Bob Johnson', 'bob.j@domain.com', '2023-10-26']);
xlsx.writeRow(['Charlie Brown', 'charlie@brown.com', '2023-10-27']);
// 4. Finalize the file. This step is crucial to save the file properly.
xlsx.finalize();
console.log('Excel file created successfully!');
맞춤 스타일링 (폰트, 색상, 테두리)
전체 기능을 갖춘 제품군만큼 방대하지는 않지만, 오픈 소스 Node-XLSX-Writer 라이브러리는 보고서를 전문적으로 보이게 하는 필수 스타일 옵션을 제공합니다. 글꼴을 굵게 또는 기울임꼴로 만들기, 배경색 및 테두리 색상 설정, 테두리 스타일('thin', 'medium', 'thick') 정의 등 스프레드시트 스타일을 처리하는 다양한 기능을 지원합니다. 다음 예제는 소프트웨어 개발자가 Node.js 앱 내에서 헤더 행을 스타일링하는 방법을 보여줍니다.
Node.js 라이브러리를 사용해 헤더 행에 스타일을 적용하는 방법?
const XLSXWriter = require('node-xlsx-writer');
const xlsx = new XLSXWriter('./output/styled_report.xlsx');
// Define a style object for the header
const headerStyle = {
bold: true,
background: 'FF2A52F5', // Blue background (ARGB Hex format)
color: 'FFFFFFFF', // White text
border: 'thin', // Thin border around cells
borderColor: 'FF000000' // Black border
};
// Apply the style when writing the header row
xlsx.writeRow(['Product', 'Category', 'Price', 'Stock'], headerStyle);
// Data rows are written without a style (or with a different one)
xlsx.writeRow(['Laptop', 'Electronics', 999.99, 15]);
xlsx.writeRow(['Desk Chair', 'Furniture', 249.50, 8]);
xlsx.finalize();