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

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

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

Начать курс

Работа с 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 — это обёртка над парсером

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