美文网首页
Laravel 导入导出Excel文件

Laravel 导入导出Excel文件

作者: 会飞的兔子zy | 来源:发表于2019-07-10 17:33 被阅读0次

    组件名称:https://laravel-excel.com/

    安装

    $ composer require maatwebsite/excel

    创建配置文件

    > php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
    简单导出导入不需要做任何配置,继续往下即可.


    导出

    运行命令
    > php artisan make:export TablesExport --model=Table
    此命令将在 app文件夹下面创建Exports\TablesExport.php类.
    填充代码如下:

    <?php
    
    namespace App\Exports;
    
    use App\Table;
    use Maatwebsite\Excel\Concerns\FromCollection;
    use Maatwebsite\Excel\Concerns\WithHeadings;
    
    class TablesExport implements FromCollection,WithHeadings
    {
       
        public function collection()
        {
            return Table::all();
        }
        //设置导出表头,如果不需要可以不设置.
        public function headings():array
        {
            return[
                'ID',
                '姓名',
                '交易笔数',
                '交易金额',
                '激活时间',
                '机身号',
                '入网机型',
                '手机号',
                '状态',
                '创建时间',
                '更新时间',
            ];
        }
    }
    
    控制器写法

    [建路由,建控制器写方法]

    namespace App\Http\Controllers\Admin\System;
    
    use App\Table;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Exports\TablesExport;
    use App\Imports\TablesImport;
    use Maatwebsite\Excel\Facades\Excel;
    
    class TableController extends Controller
    {
    
       public function export()
       {
            return Excel::download(new TablesExport, time().'.xlsx');
       }
    
    }
    

    导入

    创建导入类

    > php artisan make:import TablesImport
    此命令将在 app文件夹下面创建Imports\TablesImport.php类.
    填充代码如下:

    <?php
    
    namespace App\Imports;
    
    use Illuminate\Support\Collection;
    use Maatwebsite\Excel\Concerns\ToModel;
    use Maatwebsite\Excel\Concerns\WithHeadingRow;
    use Maatwebsite\Excel\Imports\HeadingRowFormatter;
    use App\Table;
    
    
    class TablesImport implements ToModel, WithHeadingRow
    {
    public function model(array $row)
        {
            return new Table([
                'name' => $row['姓名'],
                'frequency' => $row['交易笔数'],
                'sum' => $row['交易金额'],
                'number' => $row['激活时间'],
                'integral' => $row['机身号'],
                'model' => $row['入网机型'],
                'mobile' => $row['手机号'],
                'state' => $row['状态'],
            ]);
        }
    
        public function format()
        {
            HeadingRowFormatter::default(HeadingRowFormatter::FORMATTER_NONE);
            return $this;
        }
    }
        
        
    
    控制器方法
    public function import($filepath)
        {
            $import=new TablesImport();
            Excel::import($import->format(), $filepath);
        }
    

    将文件路径传入方法即可.

    相关文章

      网友评论

          本文标题:Laravel 导入导出Excel文件

          本文链接:https://www.haomeiwen.com/subject/tlxkkctx.html