Laravel :如何将Excel文件导入数据库

文章目录

    • 一、前提
    • 二、使用
      • 2.1、新建一个导入文件
      • 2.2、新建一个控制器和方法,调用导入文件
      • 2.3、 新建一个页面,支持文件上传

一、前提

想要将excel内容入库,laravel有扩展可以使用,常用的扩展是maatwebsite/excel,安装步骤参考上一篇:laravel中安装Maatwebsite/excel扩展

二、使用

2.1、新建一个导入文件

php artisan make:import 文件名称 --model=Model地址

在这里插入图片描述

然后在里边编写你的导入逻辑

<?php

namespace App\Imports;

use App\Exceptions\ApiException;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToArray;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithHeadingRow;

class QuesExport implements ToArray, WithChunkReading, WithHeadingRow
{

    public function array(array $rows)
    {
        $data = [];
        $now = date('Y-m-d H:i:s');
        foreach ($rows as $row) {

            $data[] = [
                'id' => $row['id'],
                'number' => 0,
                'parent_id' => 0,
                'type' => 1,
                'question' => $row['ques'],
                'standard_answer' => $row['answer'],
                'ai_ques_id' => $row['aiid'],
                'created_at' => $now
            ];
        }

        if (!$data) {
            throw new ApiException('没有要导入的数据');
            return false;
        };

        //全部导入
        DB::select('TRUNCATE table questions_copy1');

        DB::table('questions_copy1')->insert($data);

        return true;
    }

    public function chunkSize(): int
    {
        return 500;
    }

    public function headingRow(): int
    {
        return 1;
    }

    /**
     * @param Failure[] $failures
     */
    public function onFailure(Failure ...$failures)
    {
        // Handle the failures how you'd like.
        throw new ApiException('fhwaeurewsdf');
    }
}

2.2、新建一个控制器和方法,调用导入文件

    /**
     * 导入excel,入库
     *
     * */
    public function uploadQues(Request $request){
        $file = $request->file('file');

        // 保存上传文件
        $path = public_path('uploads/admin/ques');
        $this->mkdirs($path); // 已存在的路径不会再创建
        $fileName = date('YmdHis') . '_' . uniqid() . '_' . '.' . strtolower($file->getClientOriginalExtension());
        $file->move($path, $fileName);

        // 读取文件并入库
        Excel::import(new QuesExport(), $path . '/' . $fileName);

        // 删除上传文件
        unlink($path . '/' . $fileName);

        return response()->json([
            'status'=>1,
            'msg'=>'',
        ]);
    }

2.3、 新建一个页面,支持文件上传

我这里简单写了个页面,如下:

<!DOCTYPE html>
<html >
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Laravel</title>
    <script  src="/js/jquery-3.3.1.min.js?v=2021123999" type="text/javascript" charset="utf-8"></script>

    <meta name="csrf-token" content="{{ csrf_token() }}">
</head>
<body>
<div class="flex-center position-ref full-height">
    <div class="upload_box">
        <input type="file" name="file" accept="file" id="auth-upload"  onchange="uploadFile();"/>
        <div class="reload_file flex-v flex-vc flex-hc">
            <i class="icon icon_add"></i>
            <p>文件</p>
        </div>
    </div>
</div>

<script>

    function uploadFile(){
        file = $("#auth-upload")[0].files[0];

        // alert(file);
        // alert(file.name);
        // return;
        file_name = file.name;
        ext = file_name.slice(file_name.lastIndexOf(".")+1).toLowerCase();
        imgMaxSize = 1024*1024*10;
        if (ext != 'xlsx' ) {swal('文件格式不正确');return ;}
        // if (file.size > imgMaxSize) {swal('文件大小超过10M'); return ;}

        formData = new FormData();
        // 自定义formData中的内容
        formData.append('file', file);
        formData.append('_token', '{{csrf_token()}}');

        $.ajax({
            type: 'POST',
            url: "/upload",
            data: formData,
            cache: false,
            processData: false,
            contentType: false,
            dataType:'json',
            success: function (data) {
                if (data.status){
                  alert('成功');
                }else{
                    alert('失败');

                }
            }
        });
    }



</script>
</body>
</html>


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/800662.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

校园工会体育报名小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;赛事公告管理&#xff0c;球员管理&#xff0c;球队信息管理&#xff0c;比赛信息&#xff0c;比赛报名管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;比赛信息&#xff0c;比赛报名&#…

7月考研数学的保底进度,警惕三个误区!

误区1. 不恰当的课程选择和学习计划 尤其25张宇36讲大改版&#xff0c;一些同学感到焦虑&#xff0c;担心自己的课程选择不适合自己。 或者担心学习计划不够高效&#xff0c;影响最终的成绩。 课程选择&#xff0c;看3方面&#xff1a; 1. 覆盖是否全面&#xff1f; 2. 是否…

element-ui dialog 嵌套

dialog 内部嵌套 dialog&#xff0c;内层的 dialog 层级显示会遮罩在内容的 dialog 内容区域之上&#xff0c;内层 dialog 添加 append-to-body 属性即可&#xff0c;如官方文档&#xff1a;

网安小贴士(11)VPN类型

前言 VPN&#xff08;Virtual Private Network&#xff0c;虚拟专用网络&#xff09;类型多样&#xff0c;主要根据其使用的协议、应用场景以及实现方式等因素进行分类。以下是对VPN类型的详细概述&#xff1a; 一、按协议分类 根据使用的隧道协议&#xff0c;VPN可以分为以下几…

java设计模式(十五)命令模式(Command Pattern)

1、模式介绍&#xff1a; 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;其主要目的是将请求封装成一个对象&#xff0c;从而允许使用不同的请求、队列或者日志来参数化其他对象。这种模式使得命令的请求者和实现者解耦。 2、应用场景&…

c++树笔记

树的定义 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个结点的有限集。n0时称为空树。在任意一颗非空树中&#xff1a;①有且仅有一个特定的称为根&#xff08;Root&#xff09;的结点&#xff1b;②当n>1时&#xff0c;其余结点可分为m&#xff08;m&g…

基于 jenkins 部署接口自动化测试项目!

引言 在现代软件开发过程中&#xff0c;自动化测试是保证代码质量的关键环节。通过自动化测试&#xff0c;可以快速发现和修复代码中的问题&#xff0c;从而提高开发效率和产品质量。而 Jenkins 作为一款开源的持续集成工具&#xff0c;可以帮助我们实现自动化测试的自动化部署…

itextpdf字体选择

itextpdf 版本7.2.5 itextpdf-html2pdf 版本4.0.5 这里讲的是通过html转pdf&#xff0c;在html2pdf中是通过html中font-family样式来确定字体的&#xff0c;那已知font-family的情况&#xff0c;怎么确定pdf中实际用的字体&#xff0c;大致分为两步&#xff1a; 1、通过font…

ollama 模型国内加速下载,制作自定义Modelfile模型文件

参考: https://www.zhihu.com/question/640579563/answer/3562899008 https://github.com/ollama/ollama/blob/main/docs/modelfile.md gguf格式介绍: https://www.datalearner.com/blog/1051705718835586 1、ollama 模型国内加速下载 ollama主要的模型文件格式是gguf,可…

LabVIEW扬尘控制系统

设计了一套基于LabVIEW的扬尘控制系统&#xff0c;通过监测TsP&#xff08;总悬浮颗粒物&#xff09;浓度、风向和摄像头视频&#xff0c;实现对环境的综合监控和扬尘控制。系统可以自动判断扬尘位置&#xff0c;并驱动抑尘设备进行抑尘。硬件选用NI cDAQ-9178数据采集模块、Om…

甄选范文“论基于构件的软件开发方法及其应用”,软考高级论文,系统架构设计师论文

论文真题 基于构作的软件开发 (Component-Based Software Development,CBSD) 是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。基于构件的软件系统中的构件可以是COTS (Commercial-Off-the-Shelf)构件,也可以是通过其它途径获得的构件(如自…

Android Stuido Gradle build编译报错原因排查

事情是这样的&#xff0c;在更新了支付宝sdk的aar文件后&#xff0c;运行项目&#xff0c;报错了。如下图&#xff1a; 但是没有给出更多错误信息。想尝试通过gradlew compileDebug --stacktrace来输出更多build时的信息&#xff0c;但没有得到更多有效信息。 接下来&#xff…

JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)

JVM&#xff08;Java虚拟机&#xff09; JVM 内存模型 结构图 jdk1.8 结构图&#xff08;极简&#xff09; jdk1.8 结构图&#xff08;简单&#xff09; JVM&#xff08;Java虚拟机&#xff09;&#xff1a; 是一个抽象的计算模型。如同一台真实的机器&#xff0c;它有自己…

OrangePi Aipro Ai计算测试

开发板配置 http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html CPU4核64位处理器 AI处理器GPU集成图形处理器AI算力8-12TOPS算力内存LPDDR4X&#xff1a;8GB/16GB&#xff08;可选&#xff09;&#xff0c;速率&#xff1a;3200…

AI算法16-贝叶斯线性回归算法Bayesian Linear Regression | BLR

贝叶斯线性回归算法简介 频率主义线性回归概述 线性回归的频率主义观点可能你已经学过了&#xff1a;该模型假定因变量&#xff08;y&#xff09;是权重乘以一组自变量&#xff08;x&#xff09;的线性组合。完整的公式还包含一个误差项以解释随机采样噪声。如有两个自变量时…

使用NIFI连接瀚高数据库_并从RestFul的HTTP接口中获取数据局_同步到瀚高数据库中---大数据之Nifi工作笔记0067

首先来看一下如何,使用NIFI 去连接瀚高数据库. 其实,只要配置好了链接的,连接字符串,和驱动,任何支持JDBC的数据库都可以连接的. 首先我们用一个ListDatabaseTables处理器,来连接瀚高DB 主要是看这里,连接地址,以及驱动,还有驱动的位置 这个是数据连接的配置 jdbc:highgo://…

MagicClothing: 给人物照片换装的ComfyUI工作流(干货满满)

前言 在试验了各种ComfyUI 工作流&#xff0c;换了3台电脑&#xff0c;失败了无数次之后&#xff0c;终于又一次跑通了ComfyUI。 接下来会分享跑成功的各种ComfyUI工作流。 今天就拿给人物换装的新出来的这个做一个样本。 上一次文章提到给人物换装的模型[OOTDiffusion: 给人…

【OTA】-【汽车远程升级】- 技术背景及现状分析

一、OTA技术背景 在21世纪&#xff0c;计算机技术、物联网技术、移动通讯技术取得了巨大的成就&#xff0c;这些技术的发展使智能网联汽车越来越多。智能网联汽车在各行各业&#xff0c;例如&#xff1a;交通调度、工业现场、物联网设备、智慧城市、军队武器装备等&#xff0c;…

软件工程课设——成绩管理系统

软件工程课设——成绩管理系统 该文档是软件工程课程设计&#xff0c;成绩管理子系统的开发模块仓库。 功能分析 从面向的用户分&#xff0c;成绩管理子系统主要面向三类用户&#xff0c;即至少需要满足这三类用户的需求&#xff1a; 学生&#xff1a;学生是成绩管理系统的…

FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…