Laravel excel下載


使用插件

要想實現 Laravel Excel 導入導出其實很簡答。Laravel 中集成了 PHPOffice 套件中的 PHPExcel,從而方便我們以優雅的、富有表現力的代碼實現Excel/CSV文件的導入和導出。
文檔地址:https://docs.laravel-excel.com/3.1/getting-started
GitHub地址:https://github.com/Maatwebsite/Laravel-Excel
官方文檔有很多種用法,以及詳細的示例。下面我們一起來看下 Laravel 中使用Laravel Excel簡單實現Excel文件的導入和導出。
1 安裝擴展包

composer require maatwebsite/excel
  1. excel 導出文件
php artisan make:export GoodsExport

在app/export 下創建GoodsExport

選擇數組形式導出
因為一般我們都是有選擇性的導出指定數據。所以這里需要用 FromArray 來實現。

<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromArray;
class TrafficExport implements FromArray
{
    protected $invoices;
    public function __construct(array $invoices)
    {
        $this->invoices = $invoices;
    }
    public function array(): array
    {
        return $this->invoices;
    }
}

3.控制器
然后直接在控制器中操作導出數據即可。

<?php
namespace App\Http\Controllers;
use App\Exports\GoodsExport;
use Maatwebsite\Excel\Facades\Excel;
use App\Goods;
class WorkController extends Controller
{
    public function export()
    {  
        //條件
        $where = [['service_id', '=', auth('api')->id()]];
        $model = new Goods;
        $data = $model->where($where)->select('name','status')->get()->toArray();
        //因為要設置行名稱,所以講表頭合並到結果集的第一行
        $result = array_merge([[
            '名稱',
            '狀態'
        ]], $data);
        return Excel::download(new TrafficExport($result), '商品數據.xlsx');
    }
}
  1. collection 導出 集合導出
    如果到處數據表中的所有 數據可以選擇使用集合到處
<?php
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}

然后再控制器中操作數據即可

<?php
namespace App\Http\Controllers;
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
    public function export()
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }
}

導入excel文件

創建import

php artisan make:import UsersImport --model=User

該命令會在 app/Imports 創建 UsersImport.php 文件。

<?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]),
        ]);
    }
}

然后直接在控制器中導出數據即可

use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;
class UsersController extends Controller
{
    public function import()
    {
        Excel::import(new UsersImport, 'users.xlsx');
        return redirect('/')->with('success', 'All good!');
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM