准备工作

安装maatwebsite/excel

     composer require maatwebsite/excel

laravel-admin

效果图

  1. 创建按钮
$grid->tools(function (Grid\Tools $tools) {// excle 导入$tools->append(new ExcelAdd());
});

2.创建按钮文件

<?phpnamespace App\Admin\Actions;use Throwable;
use Encore\Admin\Admin;
use App\Imports\DataExcel;
use Encore\Admin\Actions\Action;
use Encore\Admin\Actions\Response;
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Validators\ValidationException;class ExcelAdd extends Action
{protected $selector = '.import-template';public function handle(){try {Excel::import(new DataExcel(time()), request()->file('file'));} catch (ValidationException $validationException) {return Response::withException($validationException);} catch (Throwable $throwable) {$this->response()->status = false;return $this->response()->swal()->error($throwable->getMessage());}return $this->response()->success('上传成功')->refresh();}// 按钮样式public function html(){return <<<HTML<a class="btn btn-sm btn-default import-template">上传简历</a>
HTML;}// 上传表单public function form(){$this->file('file', '上传简历')->rules('required', ['required' => '文件不能为空']);}/*** @return string* 上传效果*/public function handleActionPromise(){$resolve = <<<'SCRIPT'
var actionResolverss = function (data) {$('.modal-footer').show()$('.tips').remove()var response = data[0];var target   = data[1];if (typeof response !== 'object') {return $.admin.swal({type: 'error', title: 'Oops!'});}var then = function (then) {if (then.action == 'refresh') {$.admin.reload();}if (then.action == 'download') {window.open(then.value, '_blank');}if (then.action == 'redirect') {$.admin.redirect(then.value);}};if (typeof response.html === 'string') {target.html(response.html);}if (typeof response.swal === 'object') {$.admin.swal(response.swal);}if (typeof response.toastr === 'object') {$.admin.toastr[response.toastr.type](response.toastr.content, '', response.toastr.options);}if (response.then) {then(response.then);}};var actionCatcherss = function (request) {$('.modal-footer').show()$('.tips').remove()if (request && typeof request.responseJSON === 'object') {$.admin.toastr.error(request.responseJSON.message, '', {positionClass:"toast-bottom-center", timeOut: 10000}).css("width","500px")}};
SCRIPT;Admin::script($resolve);return <<<'SCRIPT'$('.modal-footer').hide()let html = `<div class='tips' style='color: red;font-size: 18px;'>导入时间取决于数据量,请耐心等待结果不要关闭窗口!<img src="data:image/gif;base64,R0lGODlhEAAQAPQAAP///1VVVfr6+np6eqysrFhYWG5ubuPj48TExGNjY6Ojo5iYmOzs7Lq6utjY2ISEhI6OjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAkKAAAALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkECQoAAAAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU/NXcDBHwkaw1cKQ8MiyEAIfkECQoAAAAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm/4AhACH5BAkKAAAALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAkKAAAALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA=="><\/div>`$('.modal-header').append(html)
process.then(actionResolverss).catch(actionCatcherss);
SCRIPT;}
}

3、获取 excel 中第一个 文件 sheet 中的信息

<?phpnamespace App\Imports;use Maatwebsite\Excel\Concerns\WithMultipleSheets;class DataExcel implements WithMultipleSheets
{private $round;public function __construct(int $round){$this->round = $round;}public function sheets(): array{return [new FirstSheetImport($this->round),];}
}

4、获取信息进行导入数据库

<?phpnamespace App\Imports;use App\Models\Data;
use App\Models\Data as DataModel;
use Illuminate\Support\Collection;
use Illuminate\Database\Eloquent\Model;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;HeadingRowFormatter::default('none');class FirstSheetImport implements ToCollection, WithBatchInserts, WithChunkReading, WithHeadingRow, ToModel
{private $round;public function __construct(int $round){$this->round = $round;}/*** @param array $row** @return Model|Model[]|null*/public function model(array $row){// 断数据是否$user = Data::where('mobile', '=', $row['手机'])->first();if ($user) {// 存在返回 nullreturn null;}// 数据库对应的字段return new DataModel(['name' => $row['姓名'],'gender' => $row['性别'],]);}public function collection(Collection $rows){//}//批量导入1000条public function batchSize(): int{return 1000;}//以1000条数据基准切割数据public function chunkSize(): int{return 1000;}
}

注意需要在models加上

 protected $fillable = ['img', 'content','static','username'];

这段来源

Dcat admin

Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需极少的代码即可快速构建出一个功能完善的高颜值后台系统。支持页面一键生成CURD代码,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码,对后端开发者非常友好。
效果图

  1. 创建按钮
$grid->tools(function (Grid\Tools $tools) {// excle 导入$tools->append(new Reast());});

2.app/admin/actions/grid 下创建 Reast.php

<?phpnamespace App\Admin\Actions\Grid;use App\Admin\Actions\Form\Import;
use Dcat\Admin\Admin;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Grid\Tools\AbstractTool;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;class Reast extends AbstractTool
{/*** @return string*/protected $title = 'Title';public function render(){$id = "reset-pwd-{$this->getKey()}";// 模态窗$this->modal($id);return <<<HTML
<span class="grid-expand" data-toggle="modal" data-target="#{$id}"><a href="javascript:void(0)"><button class="btn btn-outline-info ">上传Excel并导入数据</button></a>
</span>
HTML;}protected function modal($id){$form = new Import();Admin::script('Dcat.onPjaxComplete(function () {$(".modal-backdrop").remove();$("body").removeClass("modal-open");}, true)');// 通过 Admin::html 方法设置模态窗HTMLAdmin::html(<<<HTML
<div class="modal fade" id="{$id}"><div class="modal-dialog modal-lg" role="document"><div class="modal-content"><div class="modal-header"><h4 class="modal-title">导入数据</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body">{$form->render()}</div></div></div>
</div>
HTML);}/*** @param Model|Authenticatable|HasPermissions|null $user** @return bool*/protected function authorize($user): bool{return true;}/*** @return array*/protected function parameters(){return [];}
}

3.在Actions/form下创建Import.php

<?phpnamespace App\Admin\Actions\Form;
use Dcat\Admin\Models\Administrator;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use App\Imports\DataExcel;
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Validators\ValidationException;class Import extends Form
{public function handle(array $input){$file = env('APP_URL').'/upload/'.$input['file'];try {Excel::import(new DataExcel(time()), $input['file'],'public');//dcat-2.0版本写法return $this->response()->success('导入成功')->redirect('/');//dcat-1.7//return $this->success('导入成功');} catch (ValidationException $validationException) {return Response::withException($validationException);} catch (Throwable $throwable) {//dcat 2.0写法$this->response()->status = false;return $this->response()->error('上传失败')->refresh();//dcat 1.7//return $this->error('上传失败')->refresh();}}public function form(){$this->file('file', '上传数据(Excel)')->rules('required', ['required' => '文件不能为空']);}}

再重复上一标题下的3.4方法

laravel-admin / Dcat admin 上传Excel并导入数据到数据库相关推荐

  1. php上传查询excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例

    PHP上传Excel文件导入数据到MySQL数据库示例2020-06-20 00:34:11 最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里 ...

  2. php 上传excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例

    最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序. 要用到的工具: ThinkPHP:轻量级国产PHP开 ...

  3. asp.net C# 实现上传Excel文件导入数据到SQL Server 数据库

    前台代码,有点简单: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&q ...

  4. VFPBS上传EXCEL并保存MSSQL到数据库中

    开发环境 后端:VFP SP2 7423 +祺佑三层开发框架(猫框) 前端:VUE2.0+Element 思路 实现BS上传 就是利用猫框的importexcel类将EXCEL文件转换为临时表, 将临 ...

  5. 通过java将Excel表格导入数据到数据库

    文章目录 一.首先.我们使用到的是apache的开源框架<poi> excel导入数据到数据库原理. demo案例:(内附注释) 实体类 数据导入解析工具类 实例业务接口如下 一.首先.我 ...

  6. flask 上传 excel 并导入mysql

    参考: flask 文件的上传下载和excel操作 Python 将Excel表格数据导入MySQL数据库

  7. 【总结】C#上传excel文件到Sql server数据库

    工具 :  VS2015 + SQL Server 2008 R2 框架:三层+一般处理程序 方法:方法很多种,百度千奇百怪,总结下来更好更快的方法,以下会提到 最近接触到需要实现将一个excel表格 ...

  8. iview upload组件手动控制上传,excel表格导入

    iview upload组件手动控制上传,这里我只需要将文件的file传给后端用来做excel表格的导入,所以用不到upload-success回调,也用不到action (iview 有提供exce ...

  9. 上传excel表格批量插入到数据库

    前因 最近在做的项目是在线考核平台(目前已经在测试阶段),里面涉及到的业务复杂度很深(公司项目,不便多说),业务逻辑和需求契合度也很高,在开发过程中就遇到了很多很多的问题. 我的计划是在开发结束后把自 ...

最新文章

  1. 《预训练周刊》第13期:CPM-2:大规模经济高效的预训练语言模型、变换器作为编程语言...
  2. es6学习---.babelrc文件
  3. 汇编语言 pushf 和 popf指令
  4. 每天都在红绿灯前面梭行,不如自己来实现个红绿灯?
  5. 配置gitlab通过smtp发送邮件
  6. 服务器磁盘扩展容量操作流程
  7. MyEclipse下连接Mysql
  8. ASP.NET Core默认注入方式下如何注入多个实现(多种方式)
  9. android定时切换活动,安卓手机如何定时自动切换情景模式 (全文)
  10. 《数据结构》C语言版(清华严蔚敏考研版) 全书知识梳理 + 练习习题详解(超详细清晰易懂)
  11. Wpf 初学---01设计一个优美的注册界面
  12. 关于JSZIP压缩图片打包下载的一些用法
  13. 利用Aliddns进行端口映射,外网可以使用域名访问,在公司内网用域名访问不通。
  14. 张一鸣宣布卸任字节跳动CEO,去学习承担社会责任
  15. 在html中怎样加圆点,css伪类-小圆点
  16. 12c 新特性-统一审计(Unified Auditing)
  17. 获取自己win10系统的产品密匙
  18. python 悬浮窗_python浮窗
  19. Elasticsearch 之(20)proximity match 近似匹配
  20. 过勇 清华计算机系,16位清华学霸的简历—比你牛的人还比你努力,膝盖已跪碎...

热门文章

  1. 如何在 Spring Boot 优雅关闭加入一些自定义机制
  2. 纯干货分享,2021年阿里巴巴社招面试题总结,本人上周已成功入职!
  3. html命名锚记链接失败,命名锚记(设置命名锚记超级链接)
  4. 客户端如何修改服务器时间设置在哪里看,客户端同步服务器时间设置在哪里
  5. 【Python】过滤表情字符
  6. 新加坡区块链ICO公司是如何注册新加坡公司的
  7. PEST、5W2H、逻辑树、4P营销理论、用户行为分析
  8. 你为什么要去做微商?
  9. 手机摄像头+Matlab完成图像的自动识别
  10. 在WIN2012R2和WIN2016服务器打开网站慢的解决方法