Работа с Excel в JavaScript (Node.js): обзор библиотек и примеры кода
Несмотря на то, что PythonLib посвящён языку Python, работа с электронными таблицами Excel часто требуется и в среде Node.js. JavaScript (особенно на серверной стороне) активно используется для автоматизации отчётов, импорта данных из CRM-систем и генерации прайс-листов. В этой статье мы разберём три основные библиотеки для работы с Excel в Node.js, их возможности и приведём практические примеры кода.
Зачем Node.js для Excel?
Node.js — идеальный выбор для микросервисов и скриптов, которые обрабатывают большие объёмы данных. Библиотеки для Excel позволяют:
- Читать существующие
.xlsxи.xlsфайлы. - Создавать новые таблицы с нуля.
- Форматировать ячейки (цвета, шрифты, границы).
- Работать с формулами, стилями и объединёнными ячейками.
- Экспортировать данные в CSV.
Топ-3 библиотеки для Excel в Node.js
1. ExcelJS — самый функциональный
ExcelJS — это мощная библиотека с полной поддержкой форматов xlsx. Она позволяет работать с потоками (streams), что критично для больших файлов. Поддерживает стили, условное форматирование, диаграммы и защиту листов.
Установка:
npm install exceljs
Пример 1: Чтение существующего файла
const ExcelJS = require('exceljs');
async function readExcel(filePath) {
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile(filePath);
const worksheet = workbook.getWorksheet(1); // Первый лист
worksheet.eachRow((row, rowNumber) => {
console.log(`Строка ${rowNumber}: ${row.values.join(', ')}`);
});
}
readExcel('data.xlsx');
Пример 2: Создание файла с форматированием
const ExcelJS = require('exceljs');
async function createStyledExcel() {
const workbook = new ExcelJS.Workbook();
const sheet = workbook.addWorksheet('Отчёт');
// Заголовок с жирным шрифтом и заливкой
const headerRow = sheet.getRow(1);
headerRow.values = ['Имя', 'Возраст', 'Город'];
headerRow.font = { bold: true, size: 12 };
headerRow.fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: 'FFFF00' } // Жёлтый фон
};
// Данные
sheet.addRow(['Анна', 28, 'Москва']);
sheet.addRow(['Иван', 35, 'Санкт-Петербург']);
// Ширина столбцов
sheet.getColumn(1).width = 15;
sheet.getColumn(2).width = 10;
await workbook.xlsx.writeFile('output.xlsx');
console.log('Файл создан!');
}
createStyledExcel();
2. xlsx (SheetJS) — лёгкий и быстрый
Библиотека xlsx (также известная как SheetJS) — это "рабочая лошадка" для простых операций. Она не поддерживает продвинутое форматирование, но отлично справляется с чтением/записью данных. Поддерживает форматы xlsx, xls, csv, ods.
Установка:
npm install xlsx
Пример 3: Чтение и преобразование в JSON
const XLSX = require('xlsx');
function readToJSON(filePath) {
const workbook = XLSX.readFile(filePath);
const sheetName = workbook.SheetNames[0];
const sheet = workbook.Sheets[sheetName];
// Преобразуем лист в массив объектов
const data = XLSX.utils.sheet_to_json(sheet);
console.log(data);
}
readToJSON('data.xlsx');
Пример 4: Запись массива данных
const XLSX = require('xlsx');
function writeFromArray() {
const data = [
{ Name: 'Ольга', Age: 30, City: 'Казань' },
{ Name: 'Пётр', Age: 42, City: 'Екатеринбург' }
];
const worksheet = XLSX.utils.json_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Сотрудники');
XLSX.writeFile(workbook, 'employees.xlsx');
console.log('Готово!');
}
writeFromArray();
3. node-xlsx — минималистичный
Библиотека node-xlsx — это обёртка над парсером
Также в библиотеке
Планировщик задач PHP: cron-express
Passport.js для JavaScript (Node.js): полное руководство с примерами
Машинное обучение на Go: обзор библиотек для Golang
GraphQL библиотека JavaScript (Node.js): Полное руководство по Apollo Server и инструментам
Интернационализация (i18n) в Rust: лучшие библиотеки и практики