Работа с Excel в TypeScript: полный обзор инструментов
TypeScript, как статически типизированная надстройка над JavaScript, предоставляет отличные возможности для создания сложных корпоративных приложений. Одной из частых задач является работа с файлами Microsoft Excel — чтение, создание и редактирование таблиц. В этой статье мы рассмотрим лучшие библиотеки для работы с Excel в TypeScript, их особенности и приведём практические примеры кода.
Популярные библиотеки для работы с Excel
На сегодняшний день существует несколько зрелых решений. Вот основные из них:
- ExcelJS — самая мощная библиотека с поддержкой стилей, формул, диаграмм и потоковой обработки.
- xlsx (SheetJS) — лёгкая и быстрая библиотека, идеальна для простых операций чтения/записи.
- node-excel-export — устаревшая, но всё ещё используемая в легаси-проектах.
- Excel4Node — специализируется на создании сложных отчётов с форматированием.
Для большинства современных проектов на TypeScript мы рекомендуем ExcelJS и xlsx (SheetJS). Рассмотрим их подробнее.
Установка и настройка
Установка обеих библиотек производится через npm:
npm install exceljs
npm install xlsx
Для TypeScript необходимо установить типы (если они не идут в комплекте):
npm install --save-dev @types/node
Обратите внимание: ExcelJS поставляется со встроенными типами, а для xlsx типы нужно устанавливать отдельно:
npm install --save-dev @types/xlsx
Пример 1: Создание Excel-файла с помощью ExcelJS
Создадим простую таблицу с данными и стилями:
import ExcelJS from 'exceljs';
async function createWorkbook() {
const workbook = new ExcelJS.Workbook();
const sheet = workbook.addWorksheet('Отчёт');
// Определяем колонки
sheet.columns = [
{ header: 'ID', key: 'id', width: 10 },
{ header: 'Имя', key: 'name', width: 25 },
{ header: 'Дата', key: 'date', width: 15 },
{ header: 'Сумма', key: 'amount', width: 12 }
];
// Добавляем строки
sheet.addRow({ id: 1, name: 'Иван Петров', date: '2024-01-15', amount: 1500.50 });
sheet.addRow({ id: 2, name: 'Мария Сидорова', date: '2024-02-20', amount: 2300.75 });
sheet.addRow({ id: 3, name: 'Алексей Иванов', date: '2024-03-10', amount: 890.25 });
// Стилизация заголовка
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 = { horizontal: 'center' };
// Сохраняем файл
await workbook.xlsx.writeFile('output.xlsx');
console.log('Файл создан!');
}
createWorkbook();
Этот код создаёт файл output.xlsx с тремя строками данных и красивым заголовком.
Пример 2: Чтение Excel-файла с помощью xlsx (SheetJS)
Прочитаем существующий файл и выведем данные в консоль:
import * as XLSX from 'xlsx';
function readExcel(filePath: string) {
const workbook = XLSX.readFile(filePath);
const sheetName = workbook.SheetNames[0]; // Берём первый лист
const worksheet = workbook.Sheets[sheetName];
// Преобразуем в JSON
const data: any[] = XLSX.utils.sheet_to_json(worksheet);
console.log('Данные из файла:');
data.forEach((row, index) => {
console.log(`Строка ${index + 1}:`, row);
});
return data;
}
// Использование
const data = readExcel('input.xlsx');
Библиотека xlsx автоматически преобразует таблицу в массив объектов, где ключи — это заголовки колонок.
Пример 3: Форматирование и формулы в ExcelJS
ExcelJS позволяет добавлять формулы и сложное форматирование:
import ExcelJS from 'exceljs';
async function advancedExample() {
const workbook = new ExcelJS.Workbook();
const sheet = workbook.addWorksheet('Финансы');
// Данные
sheet.addRow(['Товар', 'Цена', 'Количество', 'Итого']);
sheet.addRow(['Ноутбук', 50000, 3]);
sheet.addRow(['Мышь', 1500, 10]);
sheet Также в библиотеке
Swagger/OpenAPI генерация для TypeScript: библиотеки и инструменты
Машинное обучение на C++: обзор библиотек и инструментов
Elasticsearch .NET для C# (.NET): полное руководство с примерами
WebSocket библиотеки Java: Полное руководство по реализации реального времени