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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 匹配滤波器及matlab仿真

    匹配滤波器及matlab仿真随机信号处理笔记:匹配滤波器——南京理工大学顾红老师的《随机信号处理》浅析文章目录随机信号处理笔记:匹配滤波器1.线性滤波器输出端信噪比2.匹配滤波器的传输函数和冲激响应2.1复函数的施瓦兹不等式2.2传输函数求解3.匹配滤波器的性质3.1匹配滤波器的最大峰值信噪比3.2匹配滤波器的幅频特性相频特性3.3匹配滤波器的物理可实现性3.4输出信号和噪声3.5匹配滤波器的时延适应性3.6匹配滤波器的频移不适应性3.7输出信号频谱与输入信号频谱关系4.匹配滤波器的信号处理SNR增益4.1matlab仿真匹配

    2022年6月1日
    49
  • 电脑登陆出现此工作站和主域间的信任关系失败[通俗易懂]

    电脑登陆出现此工作站和主域间的信任关系失败[通俗易懂]问题如下:具体操作步骤可参考https://jingyan.baidu.com/article/37bce2be193fd51003f3a259.htm

    2022年10月18日
    4
  • 使用 Amazon EC2 启动 Windows 虚拟机「建议收藏」

    使用 Amazon EC2 启动 Windows 虚拟机

    2022年2月15日
    41
  • JS获取除法取整[通俗易懂]

    JS获取除法取整[通俗易懂]保留整数部分:parseInt(17/2)向上取整:Math.ceil(17/2)向下取整:Math.floor(17/2)四舍五入:Math.round(17/2)取余数:17%2

    2022年6月21日
    42
  • Java安全之Fastjson反序列化漏洞分析

    Java安全之Fastjson反序列化漏洞分析首发:先知论坛0x00前言在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础。利于后面的漏洞分析。0x01Fas

    2021年12月13日
    41
  • Python基础知识点梳理

    Python基础知识点梳理python常见知识点梳理摘要:本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象。python的详细语法介绍可以查看官方编程手册,也有一些在线网站对python语法进行了比较全面的介绍,比如菜鸟教程:python3教程|菜鸟教程本文主要是介绍基础语法,操作实例在另一篇博客中单独介绍:python语言介绍python是一门解释型语言,python的设计目标:一门…

    2022年6月24日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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