IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Laravel Excel(maatwebsite/excel )导入 -> 正文阅读

[PHP知识库]Laravel Excel(maatwebsite/excel )导入

一:安装

1、要求:

2、安装命令:

使用Composer安装依赖
composer require maatwebsite/excel

使用Composer安装依赖 指定版本
composer require maatwebsite/excel=~3.1

3、配置修改:

将 ServiceProvider 添加到config/app.php 中注册服务提供者到 providers 数组:

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

在 config/app.php 中 aliases 数组添加 Facade:

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

如果想要进行更多的自定义配置,执行如下Artisan命令:

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

执行成功后会在 config 目录下生成一个配置文件 excel.php

到这里,安装就完成了

二:导入

1、创建一个导入类,可以使用make:import命令来执行此操作。

php artisan make:import ImportTest --model=TestImport

名称、模型自行定义,我使用的是导入 Eloquent 模型ToModel,我的一些代码参考

<?php


namespace App\Import;


use Maatwebsite\Excel\Concerns\ToModel;
use App\Models\TestImport;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\SkipsOnFailure;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Concerns\SkipsFailures;


class ImportTest implements ToModel, WithValidation, SkipsOnFailure
{
    use Importable, SkipsFailures;


    /**
     * @author cjg
     */
    public function model(array $row)
    {
        //判断标题不插入
        if ($row[0] == '手机号') {
            return null;
        }

        //下面为插入数据库,数据表自行创建,字段自行定义
        return new TestImport([
            'phone' => $row[0],
            'remarks' => $row[1],
        ]);
        
    }

     /**
     * @author cjg
     * rules()方法期望返回一个带有 Laravel 验证规则的数组。
     */
    public function rules(): array
    {
        return [
            // Can also use callback validation rules 
            '0' => function($attribute, $value, $onFailure) {
                if ($value != '手机号') {
                    if (!$value || !preg_match("/^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/", $value)) {
                        $onFailure('手机号错误');
                    }
                }
            },
            '1' => function($attribute, $value, $onFailure) {
                if ($value != '备注' && !$value) {
                    $onFailure('备注不能为空');
                }
            },
        ];
    }

}

xlsx数据截图

2、导入控制器代码

    /**
     * 导入代码
     * @author cjg
     */
    public function test_import(Request $request)
    {
        $file = $request->file('file');

        if(substr(strtolower(PHP_OS), 0, 3) == 'win') {
            //获取文件临时目录 windows环境
            $realpath = $file->getRealPath();
        } else {
            //获取文件临时目录 linux环境
            $realpath = storage_path('app') . '/' . $file->store('temp');
        }

        // 获取文件名,此方法包括后缀
        // $filename = $file->getClientOriginalName();
        // 将缓存在tmp目录下的文件移到某个位置,返回的是这个文件移动过后的路径
        // $path=$file->move(文件移到哪个文件夹下的路径, 将上传的文件重新命名的文件名);
        // 获取上传的文件缓存在tmp文件夹下的绝对路径
        // $realpath=$file->getRealPath();

        $import = new ImportTest();
        $import->import($realpath);
        if ($import->failures()) {
            //每个失败都是一个实例Maatwebsite\Excel\Validators\Failure。Failure保存有关该单元格的哪一行、哪一列以及验证错误的信息。
            foreach ($import->failures() as $failure) {
                // 出问题的那一行
                $failure->row();
                //标题键(如果使用标题行)或列索引
                $failure->attribute();
                //来自Laravel验证程序的实际错误消息
                $failure->errors();
                //失败行的值。
                $failure->values();
            }

        }
    }

3、路由记得加上,用post方法

导入就这么简单,更多详情可以参考官方文档

官方文档:Introduction | Laravel Excel

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:30:38  更:2022-04-14 23:30:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 20:53:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码