Bonjour,
je suis en train de developper une application avec laravel 5.4.30, pour le controle de compte d'abonnés d'une bibliothèque. chaque abonné possedant un compte annuel. le gestionnaire depuis 2015 utilise un documment Excel ou chaque feuille represente un mois et resume le nom du membre ainsi que les infomations sur son abonnement Jai entendu parler d'une technogie pour renseigner la BD depuis un document xls.
jai suivi un tuto

Ce que je fais

La migration

 public function up()
{
    Schema::create('items', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->text('description');
        $table->timestamps();
    });
}

la vue

<form class="form-horizontal" action="{{url('importExcel')}}" enctype="multipart/form-data" method="post">
    {{ csrf_field() }}
    <div class="form-group">
        <div class="col-md-8">
            <input type="file" name="import_file" class="form-control" required>
        </div>
        <div class="col-md-2">
            <input type="submit" class="btn btn-danger" value="Télécharger">
        </div>
    </div>
</form>

la route

Route::post('importExcel', 'HomeController@importExcel');

le controller

public function importExcel()
    {
        if(Input::hasFile('import_file')){
            $path = Input::file('import_file')->getRealPath();
            $data = Excel::load($path, function($reader) {
            })->get();
            if(!empty($data) && $data->count()){
                foreach ($data as $key => $value) {
                    $insert[] = ['title' => $value->title, 'description' => $value->description];
                }
                if(!empty($insert)){
                    DB::table('items')->insert($insert);
                    dd('Insert Record successfully.');
                }
            }
        }
        return back();
    }

Ce que je veux

je veux pouvoir enregistrer toutes les donnees excel dans la base de donnees'feuille apres feuille) et que la premiere ligne du tableau soit les champs de la table. pour apres afficher les comptes à terme a échéance proche et autres comptes

Ce que j'obtiens

une erreur comme quoi la proprieté title n'existe pas.
Property [title] does not exist on this collection instance.

4 réponses


Bonjour,
Peux tu nous donner le lien du tutoriel que tu as suivi pour que l'on puisse analyser le comportement attendu (type de fichier Excel, organisation des feuilles de ce classeur...) ?

Lexis
Auteur
http://itsolutionstuff.com/post/laravel-5-import-export-to-excel-and-csv-using-maatwebsite-exampleexample.html

Bonjour,

D'après l'exemple dont tu donnes le lien, la première feuille a des entêtes de colonne (title et description), le code fait correspondre le contenu la colonne 'title' de la feuille avec le champ 'title' de la table et fait correspondre le contenu de la colonne 'description' de la feuille avec le champ 'description' de la table.

Je suppose que ta feuille ne contient pas d'entête de colonne ou qu'aucun ne se nomme 'title'.

Bonjour, dans ton code quand tu fais

dd($value)

après le foreach, qu'est ce qui s'affiche ??