Как загрузить шаблон, используя новый laravel-excel 3.1? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь загрузить файл шаблона Excel, используя laravel-excel, но не могу найти ответ на документацию

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Ваши контроллеры

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\ImportController;

class ExportController extends Controller
{

   /**
    * Display a listing of the resource.
    * @author Matin Malek
    * @return \Illuminate\Http\Response
    */
   public function generateFile() {
      return Excel::download(new \App\Export, 'sample.xlsx');
   }


}

Файл вашей модели

 <?php

namespace App;

use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Illuminate\Support\Facades\Input;
use DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithStartRow;
use Maatwebsite\Excel\Events\BeforeExport;
use Maatwebsite\Excel\Events\BeforeSheet;
use Maatwebsite\Excel\Events\BeforeWriting;
use Maatwebsite\Excel\Excel;

class Export implements WithEvents
{
    /**
    * Export data 
    * @author Matin Malek
    * @return Array
    */
    public function registerEvents(): array
    {
      return [
         BeforeExport::class => function(BeforeExport $event){
            $event->writer->reopen(new \Maatwebsite\Excel\Files\LocalTemporaryFile(storage_path('filename.xlsx')),Excel::XLSX);

            $event->writer->getSheetByIndex(0);
            $event->getWriter()->getSheetByIndex(0)->setCellValue('A1','Your Value');
            return $event->getWriter()->getSheetByIndex(0);
         }
      ];
    }
}   

Я не уверен, что это правильный путь или нет.Но вы можете сделать это с помощью этого кода в файле модели Laravel.

0 голосов
/ 02 апреля 2019
<?php

namespace App\Imports;

use App\User;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class UsersImport implements ToCollection {

    public function collection(Collection $rows) {

        foreach ($rows as $row) {
            User::create([
                'name'     => $row[0],
                'email'    => $row[1],
                'password' => Hash::make($row[2]),
            ]);
        }
    }
}

Другой пример ...

<?php

namespace App\Imports;

use App\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;

class UsersImport implements ToModel {

    /**
     * @param array $row
     *
     * @return User|null
     */
    public function model(array $row) {
        return new User([
            'name'     => $row[0],
            'email'    => $row[1],
            'password' => Hash::make($row[2]),
        ]);
    }
}

Другие примеры вы найдете здесь ... https://github.com/Maatwebsite/laravel-excel-docs/tree/master/3.1/imports

...