入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Laravel 上传excel,读取并写入数据库 (实现自动建表、存记录值

创建时间:2016-04-20 投稿人: 浏览次数:4722



<?php

namespace AppHttpControllers;

use IlluminateFoundationBusDispatchesJobs;
use IlluminateRoutingController as BaseController;
use IlluminateFoundationValidationValidatesRequests;
use IlluminateFoundationAuthAccessAuthorizesRequests;
use IlluminateSupportFacadesInput;
use MaatwebsiteExcelFacadesExcel;

use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
use IlluminateSupportFacadesDB;


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;
	}


}



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。