zoukankan      html  css  js  c++  java
  • Laravel 上传excel,读取并写入数据库 (实现自动建表、存记录值

    <?php
     
    namespace App\Http\Controllers;
     
    use Illuminate\Foundation\Bus\DispatchesJobs;
    use Illuminate\Routing\Controller as BaseController;
    use Illuminate\Foundation\Validation\ValidatesRequests;
    use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
    use Illuminate\Support\Facades\Input;
    use Maatwebsite\Excel\Facades\Excel;
     
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Support\Facades\DB;
     
     
    class QueryController extends BaseController
    {
        use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
    	public function index(){
     
     
    		$file = Input::file('myfile');
    		if($file){
    //			$realPath = $file
    //			$path = $file -> move(app_path().'/storage/uploads');
    			$realPath = $file->getRealPath();
    			$entension =  $file -> getClientOriginalExtension(); //上传文件的后缀.
    			$tabl_name = date('YmdHis').mt_rand(100,999);
    			$newName = $tabl_name.'.'.'xls';//$entension;
    			$path = $file->move(base_path().'/uploads',$newName);
    			$cretae_path = base_path().'/uploads/'.$newName;
     
    			//dd($cretae_path);
    			//dd($file);
     
    			Excel::load($cretae_path, function($reader) use($tabl_name){
    				//$data = $reader->all();
     
    				//获取excel的第几张表
    				$reader = $reader->getSheet(0);
    				//获取表中的数据
    				$data = $reader->toArray();
     
    				$result = $this->create_table($tabl_name,$data);
    				dd($result);
     
    				//dd($data);
    			});
     
    		}
     
    		return view('query.index');
    	}
     
     
    	public function create_table($table_name,$arr_field)
    	{
     
    		$tmp = $table_name;
    		$va = $arr_field;
    		Schema::create("$tmp", function(Blueprint $table) use ($tmp,$va)
    		{
    			$fields = $va[0];  //列字段
    			//$fileds_count =  0; //列数
    			$table->increments('id');//主键
    			foreach($fields as $key => $value){
    				if($key == 0){
    					$table->string($fields[$key]);//->unique(); 唯一
    				}else{
    					$table->string($fields[$key]);
    				}
    				//$fileds_count = $fileds_count + 1;
    			}
    		});
     
    		$value_str= array();
    		$id = 1;
    		foreach($va as $key => $value){
    			if($key != 0){
     
    				$content = implode(",",$value);
    				$content2 = explode(",",$content);
    				foreach ( $content2 as $key => $val ) {
    					$value_str[] = "'$val'";
    				}
    				$news = implode(",",$value_str);
    				$news = "$id,".$news;
    				DB::insert("insert into db_$tmp values ($news)");
    				//$value_str = '';
    				$value_str= array();
    				$id = $id + 1;
    			}
    		}
    		return 1;
    	}
     
     
    }
     
    

     https://blog.csdn.net/a9925/article/details/51201405

  • 相关阅读:
    转发:前端新人少走弯路
    react 表单(受控组件和非受控组件)
    axios封装的拦截器的应用
    react与redux的一点心得(理解能力有限,蜗牛进度)
    redux一些自习时候自己写的的单词
    react路由的跳转和传参
    学以致用,react学习前奏准备阶段
    原型,原型链,给予原型和class的继承
    rpm安装和卸载
    .net项目发布到iis
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15454155.html
Copyright © 2011-2022 走看看