diff --git a/Readme.md b/Readme.md index e69de29..b2de22c 100644 --- a/Readme.md +++ b/Readme.md @@ -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 ✨ +