Travailler avec Excel en TypeScript : aperçu complet des outils
\n\nTypeScript, en tant que surcouche statiquement typée de JavaScript, offre d'excellentes possibilités pour créer des applications d'entreprise complexes. L'une des tâches fréquentes est la gestion des fichiers Microsoft Excel — lecture, création et édition de tableaux. Dans cet article, nous examinerons les meilleures bibliothèques pour travailler avec Excel en TypeScript, leurs caractéristiques et fournirons des exemples pratiques de code.
\n\nBibliothèques populaires pour travailler avec Excel
\n\nÀ ce jour, il existe plusieurs solutions matures. Voici les principales :
\n\n- \n
- ExcelJS — la bibliothèque la plus puissante avec prise en charge des styles, formules, graphiques et traitement par flux. \n
- xlsx (SheetJS) — une bibliothèque légère et rapide, idéale pour les opérations simples de lecture/écriture. \n
- node-excel-export — obsolète, mais encore utilisée dans des projets legacy. \n
- Excel4Node — spécialisée dans la création de rapports complexes avec mise en forme. \n
Pour la plupart des projets modernes en TypeScript, nous recommandons ExcelJS et xlsx (SheetJS). Examinons-les plus en détail.
\n\nInstallation et configuration
\n\nL'installation des deux bibliothèques se fait via npm :
\n\nnpm install exceljs\nnpm install xlsx\n\nPour TypeScript, il est nécessaire d'installer les types (s'ils ne sont pas inclus) :
\n\nnpm install --save-dev @types/node\n\nNotez que ExcelJS est livré avec des types intégrés, tandis que pour xlsx, les types doivent être installés séparément :
\n\nnpm install --save-dev @types/xlsx\n\nExemple 1 : Création d'un fichier Excel avec ExcelJS
\n\nCréons un tableau simple avec des données et des styles :
\n\nimport ExcelJS from 'exceljs';\n\nasync function createWorkbook() {\n const workbook = new ExcelJS.Workbook();\n const sheet = workbook.addWorksheet('Rapport');\n\n // Définir les colonnes\n sheet.columns = [\n { header: 'ID', key: 'id', width: 10 },\n { header: 'Nom', key: 'name', width: 25 },\n { header: 'Date', key: 'date', width: 15 },\n { header: 'Montant', key: 'amount', width: 12 }\n ];\n\n // Ajouter des lignes\n sheet.addRow({ id: 1, name: 'Ivan Petrov', date: '2024-01-15', amount: 1500.50 });\n sheet.addRow({ id: 2, name: 'Maria Sidorova', date: '2024-02-20', amount: 2300.75 });\n sheet.addRow({ id: 3, name: 'Alexei Ivanov', date: '2024-03-10', amount: 890.25 });\n\n // Stylisation de l'en-tête\n const headerRow = sheet.getRow(1);\n headerRow.font = { bold: true, size: 12, color: { argb: 'FFFFFFFF' } };\n headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };\n headerRow.alignment = { horizontal: 'center' };\n\n // Sauvegarder le fichier\n await workbook.xlsx.writeFile('output.xlsx');\n console.log('Fichier créé !');\n}\n\ncreateWorkbook();\n\nCe code crée un fichier output.xlsx avec trois lignes de données et un bel en-tête.
Exemple 2 : Lecture d'un fichier Excel avec xlsx (SheetJS)
\n\nLisons un fichier existant et affichons les données dans la console :
\n\nimport * as XLSX from 'xlsx';\n\nfunction readExcel(filePath: string) {\n const workbook = XLSX.readFile(filePath);\n const sheetName = workbook.SheetNames[0]; // Prendre la première feuille\n const worksheet = workbook.Sheets[sheetName];\n\n // Convertir en JSON\n const data: any[] = XLSX.utils.sheet_to_json(worksheet);\n\n console.log('Données du fichier :');\n data.forEach((row, index) => {\n console.log(`Ligne ${index + 1} :`, row);\n });\n\n return data;\n}\n\n// Utilisation\nconst data = readExcel('input.xlsx');\n\nLa bibliothèque xlsx convertit automatiquement le tableau en un tableau d'objets, où les clés sont les en-têtes de colonnes.
Aussi dans la bibliothèque
Elasticsearch .NET pour C# : guide complet avec exemples
Mise en cache en TypeScript : Redis, Memcached et solutions en mémoire
Surveillance des applications TypeScript avec Appmetrics