Работа с Excel в JavaScript (Node.js)
Современная веб-разработка часто требует программного взаимодействия с электронными таблицами. Экспорт отчетов, импорт данных из бухгалтерских систем, обработка больших массивов информации — все это делает работу с Excel в Node.js востребованной задачей. В этой статье мы рассмотрим три наиболее популярные библиотеки для работы с XLSX форматом: xlsx, exceljs и excel4node. Вы узнаете, как установить каждую из них, создавать, редактировать и читать Excel файлы.
Библиотека xlsx (SheetJS)
xlsx — это самая популярная и легковесная библиотека для работы с таблицами в Node.js. Она поддерживает не только XLSX, но и XLS, CSV, ODS и другие форматы. Основное преимущество — простота API и высокая скорость работы.
Установка:
npm install xlsx
Пример: создание и запись Excel файла
const XLSX = require('xlsx');
// Создаем рабочий лист с данными
const data = [
{ Имя: 'Анна', Возраст: 28, Город: 'Москва' },
{ Имя: 'Иван', Возраст: 35, Город: 'Санкт-Петербург' },
{ Имя: 'Ольга', Возраст: 22, Город: 'Казань' }
];
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('Файл employees.xlsx создан!');
Пример: чтение существующего файла
const workbook = XLSX.readFile('employees.xlsx');
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];
const jsonData = XLSX.utils.sheet_to_json(worksheet);
console.log('Данные из файла:', jsonData);
Плюсы:
- Минимальный размер (около 50 КБ в сжатом виде)
- Поддержка множества форматов (XLSX, XLS, CSV, ODS)
- Простой API для конвертации JSON ↔ таблица
Минусы:
- Ограниченные возможности форматирования (стили, шрифты, цвета)
- Сложности с объединенными ячейками и сложными формулами
Библиотека exceljs
exceljs — это продвинутая библиотека для работы с XLSX файлами. Она предоставляет полный контроль над форматированием: вы можете управлять шрифтами, цветами, границами, объединенными ячейками, условным форматированием и даже добавлять изображения.
Установка:
npm install exceljs
Пример: создание форматированного отчета
const ExcelJS = require('exceljs');
async function createReport() {
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Отчет');
// Определяем колонки
worksheet.columns = [
{ header: 'Товар', key: 'product', width: 20 },
{ header: 'Количество', key: 'quantity', width: 15 },
{ header: 'Цена', key: 'price', width: 15 }
];
// Добавляем данные
worksheet.addRow({ product: 'Ноутбук', quantity: 10, price: 75000 });
worksheet.addRow({ product: 'Мышь', quantity: 50, price: 1500 });
// Форматирование заголовка
const headerRow = worksheet.getRow(1);
headerRow.font = { bold: true, color: { argb: 'FFFFFFFF' } };
headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
// Форматирование ячеек с ценами
const priceColumn = worksheet.getColumn(3);
priceColumn.numFmt = '#,##0.00';
// Сохраняем
await workbook.xlsx.writeFile('report.xlsx');
console.log('Отчет создан с форматированием!');
}
createReport();
Пример: чтение и модификация файла
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile('report.xlsx');
const worksheet = workbook.getWorksheet(1);
// Добавляем новую строку
worksheet.addRow({ product: 'Клавиатура', quantity: 30, price: 4500 });
// Перезаписываем файл
await workbook.xlsx.writeFile('report.xlsx');
console.log('Файл обновлен!');
Плюсы:
- Полный контроль над стилями и форматированием
- Поддержка объединенных я
Также в библиотеке
Машинное обучение на Rust: обзор библиотек для ML и Data Science
Кэширование в Java: Redis, Caffeine, Ehcache — полное руководство
CoreLocation для Swift: полное руководство с примерами
CLI фреймворк для Rust: Clap — мощный и удобный инструмент для создания консольных приложений