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

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

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

Начать курс

Работа с 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                    

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