Laravel Excel 3.1 使用方法 Excel 导入操作

自从 maatwebsite/excel 3.0 更新以后就没用过, 因为只有导出功能,而我们更需要的是导入导出功能,

我要用导入功能真是找案例都都找不到~没办法自己学习使用吧~再写这样一个文档,凑合着给大家看~

 先放官方文档:https://laravel-excel.maatwebsite.nl/3.1/getting-started/installation.html

再放git 地址:https://github.com/Maatwebsite/Laravel-Excel

我用的时候,中国镜像里还没有3.1.0向上版本 ,只好翻墙更新了3.1.0 版本,这是第一个坑(没有了),千万别用3.0的版本使用导入功能,压根就没有这个功能~

 下面还是按顺序讲一遍操作吧:

第一步:

composer require maatwebsite/excel ~3.1.0

安装3.1.0向上的版本 我用的3.1.0 中国镜像内暂时没有,请去掉中国镜像的配置

第二步:

添加ServiceProvider config/app.php

'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

第三步:

添加门面在 config/app.php

'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]

第四步:

生成配置文件(我没有生成配置文件,无所谓,我不用~)

要发布配置,请运行vendor publish命令:

php artisan vendor:publish

1这将创建一个名为的新配置文件config/excel.php

如果以上步骤都顺利完成,那下面就可以用了

按照文档走

第一步,要先建立一个你自己的模型类,在 App\Imports

所以自己手动在laravel 目录 App 目录下创建一个Imports(导入功能,导出功能还要建另一个导入目录)的目录吧,不要使用命令了,这个make::Imports,我使用失败了

然后在里面建立一个类UserImoport.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]),
        ]);
    }
}

这里向和我一样不明白的小白说下,关于导入导出excel 文档里主要设计到三种 : 模型 model  , 集合 collection , 数组 Array 

文档使用的是模型,意思是将导入的数据转变为模型数据(就是转变成咱们从laravel 中查询出来的一样)(加深下理解,这个模型就和咱们调用数据库的模型作用是一样的,只不过这个数据源头是excel中的数据  这里,返回的数据有两种格式集合和对象,无论哪一种都是加工数据,就是把每行数据 加工变成 键值对 或者 其它数据的方法

,我不太明白为什么要导入模型(现在明白了,就是把excel数据加工成对象返回出去),可能这个当案例好用吧(错误的理解)~

关于 implements ToModel  就是接口的继承 重写一份规范,我的理解就是 对 方法功能 的 再加工 其实就是加工操作,类似laravel 中间件的作用吧~

此外还有 implements ToArray 和 implements ToCollection 两个方法,

我挂的也是一个空的导入模型 直接贴代码用吧~

建立我自己的模型类

<?php


namespace App\Imports;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToArray;


class UsersImport implements ToArray 
{
    public function Array(Array $tables)
    {
        return $tables;
    }

}

  我就是这样写的~ 也还没研究透彻怎么用

第二步直接引用就行了(我主要是导入excel 文件使用的)

然后就是主要用导入的方法引用模型就行

导入的方法 要和你写的导入模型内容一致

导入方法有 

$array = Excel::toArray(new UsersImport, 'users.xlsx');
$collection = Excel::toCollection(new UsersImport, 'users.xlsx');

 以上两种 ,引用你创建的模型,就可以直接获得导入的接口了。我用的toArray;


public function BatchUpload(Request $request)
{

$file = $request->file('excel');  //获取UploadFile实例

        if ( !$file->isValid()) { //判断文件是否有效
            return redirect()
                ->back()
                ->withErrors('文件上传失败,请重新上传');
        }


        $data = Excel::toArray(new UsersImport, request()->file('excel'));
        dd($data);
        
        // 加工数据$data;

}

本文是草稿文档,后续继续完善,今天时间不多了~

明天(过了很多个明天了)继续完善吧~

QQ:2097724800 有志之士可以一起研究下怎么用

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值