• 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下载提交视图模板
  • 相关阅读:
    求子数组最大和
    layout_weight layout_width = 0dp
    一些日历的实现
    只显示年月日的日历
    每日学习之0512
    git 出现The current branch is not configured for pull No value for key branch.master.merge found in configuration错误的解决办法
    git的配置
    使用Spring security框架实现登陆页面时跳转到favicon.ico问题
    播放视频(c#)
    太阳沉落了
  • 原文地址:https://www.cnblogs.com/yaoliuyang/p/12244744.html
Copyright © 2020-2023  润新知