Работа с Excel в JavaScript (Node.js): библиотеки и инструменты

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Работа с 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('Файл обновлен!');

Плюсы:

  • Полный контроль над стилями и форматированием
  • Поддержка объединенных я

Рекомендаций