Go to file
Dorian Contal 07fe6226b8 Modification namespace 2025-04-23 11:06:32 +02:00
src/Service/Import Modification namespace 2025-04-23 11:06:32 +02:00
Readme.md Actualiser Readme.md 2025-04-23 09:12:37 +02:00
composer.json Modification namespace 2025-04-23 11:06:32 +02:00

Readme.md

📦 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 :

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 :

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