Работа с Excel в TypeScript: библиотеки, примеры и инструменты
TypeScript — мощный язык для разработки веб-приложений, и часто возникает необходимость программно работать с файлами Excel: читать отчёты, генерировать таблицы, экспортировать данные. В этой статье мы рассмотрим три основные библиотеки для работы с Excel в TypeScript, их возможности и приведём практические примеры.
1. Основные библиотеки для работы с Excel в TypeScript
Существует несколько популярных решений, каждое из которых имеет свои сильные стороны:
- ExcelJS — самая популярная библиотека для чтения, записи и стилизации Excel-файлов. Поддерживает .xlsx, .xlsm, .csv, а также работу с формулами, условным форматированием и изображениями.
- xlsx (SheetJS) — лёгкая и быстрая библиотека для базовых операций: чтения и записи табличных данных. Идеально подходит для простых задач.
- excel4node — библиотека для создания Excel-файлов с акцентом на производительность и поддержку стилей.
2. Установка и настройка
Для установки выбранной библиотеки используйте npm. Рассмотрим установку ExcelJS и xlsx:
npm install exceljs
npm install xlsx
Для TypeScript дополнительно установите типы (для xlsx они встроены):
npm install @types/exceljs --save-dev
npm install @types/node --save-dev
3. Работа с Excel через ExcelJS
3.1 Создание и запись файла
Создадим новый Excel-файл с заголовками и данными:
import * as ExcelJS from 'exceljs';
async function createExcel() {
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Данные');
// Определяем колонки
worksheet.columns = [
{ header: 'Имя', key: 'name', width: 25 },
{ header: 'Возраст', key: 'age', width: 10 },
{ header: 'Город', key: 'city', width: 20 }
];
// Добавляем строки
worksheet.addRow({ name: 'Анна', age: 28, city: 'Москва' });
worksheet.addRow({ name: 'Иван', age: 35, city: 'Санкт-Петербург' });
worksheet.addRow({ name: 'Ольга', age: 22, city: 'Казань' });
// Стилизация заголовков
const headerRow = worksheet.getRow(1);
headerRow.font = { bold: true, color: { argb: 'FFFFFFFF' } };
headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
// Сохраняем файл
await workbook.xlsx.writeFile('example.xlsx');
console.log('Файл создан');
}
createExcel();
3.2 Чтение существующего файла
Прочитаем данные из ранее созданного файла:
async function readExcel() {
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile('example.xlsx');
const worksheet = workbook.getWorksheet('Данные');
if (!worksheet) return;
worksheet.eachRow((row, rowNumber) => {
const rowData = row.values as any[];
console.log(`Строка ${rowNumber}: ${rowData.join(', ')}`);
});
}
readExcel();
4. Работа с Excel через xlsx (SheetJS)
4.1 Чтение данных
Библиотека xlsx позволяет быстро прочитать данные из файла:
import * as XLSX from 'xlsx';
function readXlsxFile(filePath: string) {
const workbook = XLSX.readFile(filePath);
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];
const data = XLSX.utils.sheet_to_json(worksheet);
console.log(data);
}
readXlsxFile('example.xlsx');
4.2 Создание и запись
Создадим простой Excel-файл из массива объектов:
function createXlsx() {
const data = [
{ Name: 'Анна', Age: 28, City: 'Москва' },
{ Name: 'Иван', Age: 35, City: 'СПб' }
];
const worksheet = XLSX.utils.json_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Лист1');
XLSX.writeFile(workbook, 'output.xlsx');
console.log('Файл сохранён');
}
createXlsx();
5. Продвинутые возможности ExcelJS
5.1 Формулы и условное форматирование
ExcelJS позволяет добавлять формулы и условное форматирование:
async function advancedExcel() {
const workbook = new ExcelJS.Workbook();
const ws = workbook.addWorksheet('Отчёт');
ws.getCell('A1').value Также в библиотеке
Работа с CSV в PHP: чтение, запись и обработка данных
Rate Limiting в JavaScript (Node.js): Полное руководство по библиотеке express-rate-limit
Pistache для C++: полное руководство с примерами
Логирование в JavaScript (Node.js): лучшие решения для вашего проекта