侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

laravel-admin 添加Excel导入功能

Laravel  /  管理员 发布于 2年前   4952
  1. 引入laravel-excel;

  2. 添加导入按钮:

 //导入
 $grid->tools(function ($tools) {
   $tools->append(new ExcelImport());
 });
 //导出
 $grid->exporter(new ExcelExporter('cardnews'));

   image.png

   3. 导入按钮控制器 

<?php
namespace App\Admin\Extensions\Tools;
use Encore\Admin\Admin;
use Encore\Admin\Grid\Tools\AbstractTool;
use Illuminate\Support\Facades\Request;

class ExcelImport extends AbstractTool
{
   public function script()
   {
       return <<<EOT
   $('.file-upload').on('change', function () {
       $('.file-upload-form').submit();
   });
EOT;
   }
   public function render()
   {
       Admin::script($this->script());
       if (Request::path() == 'loansarticles'){
           $url = 'loansnewsimport';
       }else {
           $url = 'cardnewsimport';
       }
       return view('admin.tools.excelimport')->with('url',$url);
   }
}

  4. 按钮视图:\resources\views\admin\tools\excelimport.blade.php

<label class="btn btn-success"{{-- data-toggle="modal" data-target="#uploadModal"--}}>
   <i class="fa fa-stack-overflow"></i>&nbsp;&nbsp;数据导入
   <form action="{{$url}}" method="post" class="file-upload-form" enctype="multipart/form-data" pjax-container>
       <input type="file" name="files[]" class="hidden file-upload" multiple>
       {{ csrf_field() }}
   </form>
</label>

  5. 导入的方法:重组数据拼sql,插入数据库

public function import(Request $request)
 {
     $files = $request->file('files');
     $dir = $request->get('dir', '/');
     $manager = new MediaManager($dir,'xlsx');
     try {
         //文件上传服务器
         if ($manager->upload($files)) {
             admin_toastr('导入成功');
         }
         //文件存储路径
         $filePath = "/data/www/cbb_new/storage/app/public/".$files[0]->getClientOriginalName();

         Excel::load($filePath, function($reader) {
             $data = $reader->all();
             //dd($data);
             //批量存储
             $value=[];
             $lastid = CardArticle::orderBy('id','desc')->limit(1)->value('id');
             foreach ($data as $k => $v ){
                 $lastid++;
                 //存储表格每行的值
                 $value['title']    =$v['title'];
                 $value['dt'] =date('Y-m-d H:i:s');
                 $value['seotitle'] =$v['seotitle'];
                 $value['keywords'] =$v['keywords'];
                 $value['author']   =$v['author'];
                 $value['class_id'] = intval($v['class_id']);
                 $value['bank_id']  =intval($v['bank_id']);
                 $value['content']  =$v['content'];
                 $value['views']    =intval($v['views']);
                 $value['order']    =intval($v['order']);
                 $value['generate_url']=  '/cardnews/cardnews_'.$lastid.'.shtml';
                 $value['status']   =intval($v['status']);

                 CardArticle::create($value);
             }
         });

     } catch (\Exception $e) {
         admin_toastr($e->getMessage(), 'error');
     }
     return back();
 }

    6. 写路由:admin\routes.php  我的方法写在CardArticleController控制器里面

$router->any('cardnewsimport', 'CardArticleController@import');

    7. Models里面添加要导入的字段

protected $fillable = ['xx','xx',...]

    完成 看看效果 表格文件/导入后截图

image.png

image.png


  • 上一条:
    国内最新最便捷的使用Google方法,无需翻墙,直接输入google.com
    下一条:
    关于猴子选大王的面试题
  • 昵称:

    邮箱:

    2条评论 (评论内容有缓存机制,请悉知!)
    最新最热

    这应该算是比较详细了吧, 你是哪一步没看懂吗?

    博主  2020-12-29 17:51:06 赞 (0)

    咋导入excel

    唐伯虎  2020-12-28 17:53:22 赞 (1)
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在laravel框架中的5个HTTP客户端技巧分享(0个评论)
    • 在laravel项目中实现密码强度验证功能推荐扩展包:password-strength(0个评论)
    • Laravel Response Classes 响应类使用优化浅析(0个评论)
    • 在Laravel中使用FilePond上传文件及测试用例(0个评论)
    • 在laravel项目中第三方回调信息处理扩展包:flaky(0个评论)
    • 近期文章
    • 在laravel框架中的5个HTTP客户端技巧分享(0个评论)
    • 在go语言中使用FFmpeg库实现PCM音频文件编码为mp3格式文件流程步骤(0个评论)
    • gopacket免安装Pcap实现驱动层流量抓包流程步骤(0个评论)
    • 在laravel项目中实现密码强度验证功能推荐扩展包:password-strength(0个评论)
    • 在go语言中用filepath.Match()函数以通配符模式匹配字符串示例(0个评论)
    • Laravel Response Classes 响应类使用优化浅析(0个评论)
    • mysql中sql_mode的各模式浅析(0个评论)
    • 百度文心一言今天发布,个人第一批内测体验记录,不好别打我(0个评论)
    • 嘿加密世界让我们谈谈在共识中将中本聪主流化(0个评论)
    • 在go语言中寻找两个切片或数组中的相同元素/共同点/交集并集示例代码(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-01
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客