116 lines
2.7 KiB
Markdown
116 lines
2.7 KiB
Markdown
# 📦 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 sudalys/import-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
|
|
);
|
|
```
|
|
---
|
|
|
|
## 🧑💻 Exemple d'Importation dans le Contrôleur
|
|
|
|
Dans votre contrôleur ou service, n'oubliez pas d'importer les classes nécessaires pour utiliser le service d'importation :
|
|
|
|
```php
|
|
use Sudalys\ImportService\CsvImportService;
|
|
use Sudalys\ImportService\ExcelFileTransformer;
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 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
|
|
|
|
---
|
|
|
|
## ⚙️ Configuration du Service dans `services.yaml`
|
|
|
|
Pour que le service fonctionne correctement dans Symfony, ajoutez la configuration suivante dans votre fichier `services.yaml` :
|
|
|
|
```yaml
|
|
services:
|
|
Sudalys\ImportService\:
|
|
resource: '../vendor/sudalys/import-service/src/Service/Import/'
|
|
autowire: true
|
|
autoconfigure: true
|
|
public: false
|
|
```
|
|
|
|
---
|
|
|
|
## 🎓 Exigences
|
|
|
|
- PHP >= 8.1
|
|
- Symfony >= 5.4
|
|
- Extensions PHP : `ext-fileinfo`, `ext-mbstring`
|
|
|
|
---
|
|
|
|
## 📄 License
|
|
|
|
MIT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|