Laravel Excel 3.1 导入

laravel版本 6.2 不能再指定 maatwebsite/excel 2版本的,而版本3的excel基本方法已经重写了,使用方法也与2.x,大不一样!

目录

1.环境要求:

2.安装

3.Excel实现导入

4.Excel获取数据,自己实现导入


1.环境要求:

  • PHP: ^7.0

  • Laravel: ^5.5

2.安装

composer require maatwebsite/excel

不需要在config/app.php中加载配置

3.Excel实现导入

新建导入文件,导入导出业务代码尽量不要和原来业务耦合。我们拿 feedback 模块举例

php artisan make:import FeedbackImport --model=Feedback

会在 app 目录下创建 Exports 目录

app
 ├── Imports
 │   ├── FeedbackImport.php

FeedbackImport 代码内容

use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToCollection;

class FeedbackImport implements ToCollection
{
    public function collection(Collection $collection)
    {
        foreach($collection as $item) {
            $this->createData($item);
        }
    }

    /**
     * 数据业务处理
     * @param $rows
     */
    public function createData($rows)
    {
        $insert = [
            'uid' => $rows[0],
            'phone' => $rows[1],
            'tel' => $rows[2],
            'content' => $rows[3],
            'addtime' => time(),
        ];
        DB::table('feedback')->insert($insert);
    }
}

 excel 文件内容

导入成功,数据表如下:

 

4.Excel获取数据,自己实现导入

新建导入文件,导入导出业务代码尽量不要和原来业务耦合。我们拿 feedback 模块举例

php artisan make:import FeedbackImport --model=Feedback

使用标题3创建的FeedbackImport文件亦可。

FeedbackImport 文件代码如下:

use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToCollection;

class FeedbackImport implements ToCollection
{
    // 增加trait调用
    use Importable;

业务控制器

use App\Imports\FeedbackImport;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;

class FeedbackController extends AdminBaseController
{
    public function importV2()
    {
        // 项目中的文件路径
        $file = './uploads/product_import/20210324/20210324115657897071.xls';
        // 读取文件中的内容 转化为数组
        $data = (new FeedbackImport())->toArray($file);
        if(!empty($data)) {
            $arr = $data[0];
            foreach($arr as $rows) {
                $insert = [
                    'uid' => $rows[0],
                    'phone' => $rows[1],
                    'tel' => $rows[2],
                    'content' => $rows[3],
                    'addtime' => time(),
                ];
                DB::table('feedback')->insert($insert);
            }
        }
    }
}

导入成功,数据表如下:

暂时到这里,基本能实现大部分的功能了!

借鉴文章:https://learnku.com/articles/32400

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值