Go to file
Dorian 6853bf95ae Condition si var vide non obligatoire mais regex 2025-05-14 10:46:22 +02:00
src/Service/Import Condition si var vide non obligatoire mais regex 2025-05-14 10:46:22 +02:00
Readme.md Modif readme inclusion yaml et exemple import 2025-04-23 11:52:47 +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
);

🧑‍💻 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 :

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 :

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