Работа с Excel в JavaScript (Node.js): обзор библиотек и практические примеры
Несмотря на то, что PythonLib посвящён языку Python, в современной веб-разработке часто возникает необходимость обрабатывать таблицы Excel на серверной стороне с помощью Node.js. JavaScript (Node.js) — это мощная среда для создания серверных приложений, и работа с электронными таблицами — одна из востребованных задач. В этой статье мы рассмотрим три основные библиотеки для работы с Excel в Node.js: node-xlsx (xlsx), exceljs и excel4node, а также приведём примеры их использования.
Зачем нужна работа с Excel в Node.js?
На серверной стороне часто требуется:
- Генерировать отчёты в формате XLSX для скачивания пользователями;
- Импортировать данные из загруженных Excel-файлов в базу данных;
- Автоматически обрабатывать прайс-листы, таблицы учёта и другие документы;
- Создавать сложные отчёты с форматированием, диаграммами и стилями.
Node.js отлично справляется с этими задачами, предоставляя несколько специализированных библиотек.
Библиотека xlsx (SheetJS)
SheetJS (пакет xlsx) — самая популярная и зрелая библиотека для работы с Excel в JavaScript. Она поддерживает чтение и запись множества форматов: XLSX, XLS, CSV, ODS и другие. Основное преимущество — простота и скорость.
Установка
npm install xlsx
Пример: создание и сохранение файла Excel
const XLSX = require('xlsx');
// Создаём новую рабочую книгу
const workbook = XLSX.utils.book_new();
// Данные для таблицы
const data = [
['Имя', 'Возраст', 'Город'],
['Анна', 28, 'Москва'],
['Иван', 35, 'Санкт-Петербург'],
['Мария', 22, 'Казань']
];
// Преобразуем массив в лист
const worksheet = XLSX.utils.aoa_to_sheet(data);
// Добавляем лист в книгу
XLSX.utils.book_append_sheet(workbook, worksheet, 'Пользователи');
// Записываем файл на диск
XLSX.writeFile(workbook, 'users.xlsx');
console.log('Файл users.xlsx создан!');
Пример: чтение существующего файла
const XLSX = require('xlsx');
const workbook = XLSX.readFile('users.xlsx');
const sheetName = workbook.SheetNames[0]; // Берём первый лист
const worksheet = workbook.Sheets[sheetName];
// Преобразуем лист в массив объектов
const jsonData = XLSX.utils.sheet_to_json(worksheet);
console.log(jsonData);
Библиотека exceljs
ExcelJS — более современная и функциональная библиотека. Она предоставляет богатые возможности по форматированию: стили ячеек, шрифты, цвета, объединение ячеек, условное форматирование, работа с изображениями и диаграммами. Поддерживает потоки (streams) для работы с большими файлами.
Установка
npm install exceljs
Пример: создание форматированного отчёта
const ExcelJS = require('exceljs');
async function createReport() {
const workbook = new ExcelJS.Workbook();
const sheet = workbook.addWorksheet('Отчёт');
// Определяем колонки
sheet.columns = [
{ header: 'Товар', key: 'product', width: 30 },
{ header: 'Цена', key: 'price', width: 15 },
{ header: 'Количество', key: 'quantity', width: 15 }
];
// Добавляем данные
sheet.addRow({ product: 'Ноутбук', price: 75000, quantity: 10 });
sheet.addRow({ product: 'Мышь', price: 1500, quantity: 50 });
sheet.addRow({ product: 'Клавиатура', price: 3500, quantity: 30 });
// Форматируем заголовок
const headerRow = sheet.getRow(1);
headerRow.font = { bold: true, size: 12, color: { argb: 'FFFFFFFF' } };
headerRow.fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: 'FF4472C4' }
};
// Выравнивание
headerRow.alignment = { vertical: 'middle', horizontal: 'center' };
// Сохраняем файл
await workbook.xlsx.writeFile('report.xlsx');
console.log('Отчёт создан!');
}
createReport();
Пример: чтение с обработкой строк
const ExcelJS = require('exceljs');
async function readFile() {
const workbook = new ExcelJS.Workbook();
await