Travailler avec Excel en TypeScript : aperçu des bibliothèques et exemples pratiques
TypeScript est une extension fortement typée de JavaScript, activement utilisée dans le développement web, notamment pour la création d'applications d'entreprise complexes. L'une des tâches courantes est le travail avec les tableaux Excel : lecture de données, génération de rapports, export et import. Dans cet article, nous examinerons les principales bibliothèques pour travailler avec Excel en TypeScript et fournirons des exemples pratiques de code.
Bibliothèques populaires pour travailler avec Excel en TypeScript
Aujourd'hui, il existe plusieurs solutions stables. Examinons les trois plus populaires :
- ExcelJS — une bibliothèque puissante pour lire, créer et modifier des fichiers XLSX. Elle prend en charge les styles, les formules, les graphiques, la protection des feuilles et bien plus encore. Fonctionne dans le navigateur et Node.js.
- xlsx (SheetJS) — une bibliothèque légère pour l'analyse et la génération de tableaux. Idéale pour un traitement rapide des données sans mise en forme complexe.
- node-xlsx — une simple surcouche de xlsx, orientée Node.js. Pratique pour l'export rapide de tableaux de données.
Dans ce guide, nous nous concentrerons sur ExcelJS, car elle offre le plus grand contrôle sur la structure et les styles du document.
Installation et configuration
Pour commencer, installez la bibliothèque via npm :
npm install exceljsnpm install @types/node --save-dev // pour les types Node.jsAssurez-vous également que TypeScript est configuré dans votre projet (fichier tsconfig.json).
Création d'un fichier Excel simple
Exemple de création d'un fichier avec des en-têtes et des données :
import * as ExcelJS from 'exceljs';
async function createWorkbook() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Employés');
// En-têtes sheet.columns = [ { header: 'ID', key: 'id', width: 10 }, { header: 'Nom', key: 'name', width: 25 }, { header: 'Poste', key: 'position', width: 20 }, { header: 'Salaire', key: 'salary', width: 15 }, ];
// Données const employees = [ { id: 1, name: 'Ivan Petrov', position: 'Développeur', salary: 150000 }, { id: 2, name: 'Maria Smirnova', position: 'Designer', salary: 120000 }, { id: 3, name: 'Alexei Kuznetsov', position: 'Manager', salary: 130000 }, ];
employees.forEach(emp => sheet.addRow(emp));
// Sauvegarde await workbook.xlsx.writeFile('employees.xlsx'); console.log('Fichier créé !');}
createWorkbook();Lecture de données depuis Excel
Lecture d'un fichier existant et conversion des données en objets TypeScript :
import * as ExcelJS from 'exceljs';
interface Employee { id: number; name: string; position: string; salary: number;}
async function readWorkbook() { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile('employees.xlsx'); const sheet = workbook.getWorksheet('Employés'); const employees: Employee[] = [];
sheet.eachRow((row, rowNumber) => { if (rowNumber === 1) return; // on saute les en-têtes employees.push({ id: row.getCell(1).value as number, name: row.getCell(2).value as string, position: row.getCell(3).value as string, salary: row.getCell(4).value as number, }); });
console.log('Employés lus :', employees.length); console.log(employees);}
readWorkbook();Mise en forme et styles
ExcelJS permet de personnaliser l'apparence des cellules : polices, remplissage, bordures, alignement. Exemple d'ajout de styles aux en-têtes :
import * as ExcelJS from 'exceljs';
async function styledWorkbook() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Rapport');
// Définition du style pour les en-têtes const headerStyle: Partial&