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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/113092.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • eclipse卸载adt插件(360卸载)

    Eclipse中ADT可能出错,那么卸载重装可能比较省事,具体步骤直接如图:下一步就是选择需要卸载的因插件文件路径变更,而报错问题Somesitescouldnotbefound.Seetheerrorlogformoredetail,解决方法如下图:转载于:https://www.cnblogs.com/zhuchengyi/p/3143602.ht…

  • linux(1)Mac上传文件到Linux服务器

    linux(1)Mac上传文件到Linux服务器前言我们使用mac时,想让本地文件上传至服务器,该怎么办呢windows系统,我们可以使用xftp或者rz命令,那么mac呢?mac系统,我们可以使用sftp、scp或者rz命令,本文介绍sft

  • AbstractInterceptor和Interceptor的区别

    AbstractInterceptor和Interceptor的区别AbstractInterceptor实现了Interceptor接口,并且空实现了init()和destroy()方法。在使用中,如果无需实现init和destroy方法,可以直接实现AbstractInterceptor

  • 测试后台管理系统思路和方法

    测试后台管理系统思路和方法每个公司不管做什么业务,开发网站,app或者公众号亦或小程序,但凡涉及到用户信息或者订单信息都有对应的后台管理系统,所以每个测试人员基本上都有测试过后台管理系统的经验,但是后台管理系统测试不仅仅是基本的增删改查测试,还需要进行业务逻辑测试,还有兼容性测试,接口测试和压力测试。下面是我总结的测试思路和方法,可能有很多不足之处,希望多多评论补充第一步,分析需求文档和原型图,原型图最好看有交互效果的…

  • python怎样安装whl文件

    python怎样安装whl文件python第三方组件有很多都是whl文件,遇到这样的whl文件应该怎样安装呢,今天来介绍一下whl文件怎样安装。(一)下载whl文件可以从下面;两个网站找到自己需要的whl文件,部分文件在国内网站上没有,pypi网站上是最全的。pypi网站:https://pypi.python.org/pypi/国内whl集合网:https://www.l…

  • JS检查是否支持Storage

    查看效果:http://hovertree.com/code/html5/q69kvsi6.htm代码:<!DOCTYPEhtml><html><head&gt

    2021年12月22日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号