Actualiser Readme.md

This commit is contained in:
Dorian 2025-04-23 09:10:33 +02:00
parent ec0123dfbd
commit 2ea5ff9a9c
1 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,84 @@
# 📦 Import CSV & Excel Service (Symfony)
Un service Symfony modulaire pour importer, valider et transformer automatiquement des fichiers **CSV** et **Excel** (XLS/XLSX). Idéal pour les pipelines d'importation robustes avec gestion des erreurs et validation dynamique.
---
## 🚀 Installation
Ajoutez ce package via Composer :
```bash
composer require ton-vendor/import-csv-service
```
---
## 📂 Fonctionnalités
- ✅ Import de fichiers `.csv`, `.xls`, `.xlsx`
- ⚖️ Validation dynamique des colonnes avec regex
- 📊 Log des erreurs via le logger Symfony (PSR-3)
- 📃 Colonne obligatoire supportée
- ⚙️ Architecture extensible via des `Processor`
- 🔄 Conversion automatique des `.xls` vers `.xlsx`
- ❌ Suppression des colonnes vides pour éviter les erreurs de duplicat
---
## 🚀 Utilisation
Voici un exemple typique dans votre contrôleur ou service d'importation :
```php
if (strtolower(pathinfo($filePath, PATHINFO_EXTENSION)) === 'xlsx' || strtolower(pathinfo($filePath, PATHINFO_EXTENSION)) === 'xls') {
$filePath = $excelTransformer->transform($filePath, 'Csv', 3); // 3 correspond à la ligne d'entête
}
$result = $importService->import(
$filePath,
$this->HeaderGeneral,
$this->regexListe,
$this->ColonneObligatoire,
$logger
);
```
---
## 🔧 Configuration attendue
- `$HeaderGeneral` : tableau des en-têtes attendues (ordre et contenu exact)
- `$regexListe` : tableau associatif `colonne => regex`
- `$ColonneObligatoire` : tableau contenant les noms de colonnes obligatoires
---
## 🚫 Gestion des erreurs
Les erreurs de validation sont automatiquement loggées via `LoggingErrorHandler` qui utilise le logger PSR-3 de Symfony.
---
## 🌐 Transformations Excel
Géré via `ExcelFileTransformer` :
- Conversion `.xls``.xlsx`
- Extraction des données via `Box\Spout`
- Ignorer les lignes pré-étêtées via `$headerPosition`
- Formatage des dates
---
## 🎓 Exigences
- PHP >= 8.1
- Symfony >= 5.4
- Extensions PHP : `ext-fileinfo`, `ext-mbstring`
---
## 📄 License
MIT — Faites-vous plaisir ✨