zoukankan      html  css  js  c++  java
  • laravel实现excel表的导入导出功能

    1.这是个我去公司之后曾经折磨我很久很久的功能查阅了很多资料但是功夫不负有心人在本人的不懈努力下还是实现了这个功能

    (ps看不懂我下面说讲述的可以参考这个laravel学院的官方文档 https://xueyuanjun.com/post/2024.html

      官方主页:https://laravel-excel.com/

    1.1使用的时候先用composer安装excel依赖

    这里需要注意一下最好只用laravel5.0的框架然后使用excel2.0不然的话会报错

    第一个是默认安装一般安装最新版本,第二个是2.1版本

    composer require maatwebsite/excel    composer require maatwebsite/excel ~2.1

    1.2同样在config/app.php中注册门面到aliases数组:

    'Excel' => Maatwebsite\Excel\Facades\Excel::class,

    1.3如果想要对Laravel Excel进行更多的自定义配置,执行如下Artisan命令:(ps:这个看情况选择你需要的配置)

    php artisan vendor:publish

     上面的如果你不会执行的话就直接执行第二个

      php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"  
    namespace App\Http\Controllers;
    use App\Http\Controllers\Admin\ContentTypes\File;
    use App\Models\Win1;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Support\Facades\Input;
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Support\Facades\Storage;
    use Maatwebsite\Excel\Facades\Excel;
    use Illuminate\Routing\Controller;
    use Symfony\Component\CssSelector\Parser\Reader;
    使用的时候需要导入的use类

    将数据导出excel功能代码

     public function index(Excel $excel){
         //将数据库中的信息转化为excel文件内容
        $data=Win1::with('hasManyWindow')->get();
       foreach ($data as $key){
         $export[]=array(
             'id'=>$key['id'],
             'window'=>$key['window'],
    //         数据表中的两个字段
         );
       }
       $table_name='窗口名称';
    
    $excel::create($table_name,function ($excel)use($export){
        $excel->sheet('Sheet1',function ($sheet)use($export){
           $sheet->fromArray($export);
        });
    })->store('xlsx')->export('xlsx');
    
    
        }
    excel数据导出为数据表的类

    将excel表中的数据通过视图层按钮导入数据库

    public function excelfile(Request $request)
    {
        //1.思路get传输过来的Excel文件地址
        //2.循环读取数据保存到数组
        //3.循环数组保存到数据库中
    
    $flag=true;
    $file=$request->file('file');
    
    if($file){
    //得到文件的路径
        $realPath = $file->getRealPath();
        //上传文件的后缀.
        $entension =  $file -> getClientOriginalExtension();
    //  获取上传的文件缓存在tmp文件夹下的绝对路径
    $newpath=$file->getRealPath();
        $tabl_name = date('YmdHis').mt_rand(100,999);//时间戳
    if($flag==true){
        Excel::load($realPath,function ($reader) use ($tabl_name){
            //获取excel的第几张表
            $reader = $reader->getSheet(0);
            //获取表中的数据
            $data = $reader->toArray();
            for($row=0;$row<count($data);$row++){
                //echo $data[$row]['0'].'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
                DB::table('windowmessage')->insert(['id'=>$data[$row]['0'],'window'=>$data[$row]['1']]);
            }
    
        });
        return '<script>alert("文件上传成功");window.location.href="importexcel"</script>';
    }
    
    }else{
        return '<script>alert("文件为空上传失败!请重新上传");window.location.href="importexcel"</script>';
    }
    
    
    }
    将excel数据导入数据库

    下面是blade模板中的代码(ps:给自己看的)

      <a href="{{url('excelExport')}}" id="href"><div   id="btn" >下载Excel</div></a>
    
    {{--导入按钮--}}
    
            <form style="display:none" action="{{url('excelfile')}}" method="post" enctype="multipart/form-data">
                {{csrf_field()}}
                  <input type="file" name="file" value="">
    
            </form>
            <input type="submit" value="批量导入" id="tijiao" >
    
            <!--  记得载入jquery文件 -->
    
            <script>
                $('#tijiao').click(function(){
                    $(this).prev('form').find('[name="file"]').trigger('click');
                });
    
                // 当表单文件有变化时执行提交动作
    
                $('[name="file"]').change(function(){
                    if($(this).val()){
                        $('#tijiao').addClass('disabled' );
                        $(this).parent().submit();
                    }
                });
            </script>
    blade下载提交视图模板
  • 相关阅读:
    入手了一个南京电表厂MF16袖珍万用电表,哥测的不是电,是情怀
    40元淘来的香橙派 orange pi one 全志h3竟然可以安装桌面使用浏览器firefox上网
    https://blog.csdn.net/daaikuaichuan/article/details/83862311
    Arthas
    elect、poll、epoll优缺点
    jvm调优神器——arthas
    Mysql事物与二阶段提交
    全网最全一篇数据库MVCC详解,不全你打我
    冒泡排序和选择排序
    快速排序(过程图解)
  • 原文地址:https://www.cnblogs.com/yaoliuyang/p/12244744.html
Copyright © 2011-2022 走看看