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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机上好用的java编译器_手机上好用的java编译器

    手机上好用的java编译器_手机上好用的java编译器手机上好用的java编译器安卓版是一款专为java开发人员服务的编辑客户端应用,利用手机上好用的java编译器手机安卓版实时进行相关编辑还能进行简单的编译,运行单个小程序等,提供您的效率。功能介绍手机上好用的java编译器安卓版是一款将openjdk中关于编译java工程的代码移植到了安卓平台。手机上好用的java编译器手机安卓版支持添加jar格式的lib文件,并且将编译后的程序dex化,以便在安…

    2022年7月14日
    32
  • 学习Spark的入门教程——《Spark大数据实例开发教程》

    学习Spark的入门教程——《Spark大数据实例开发教程》去年年底出的一本学习Spark大数据的教程,文笔上言简意赅,只讲最常用的内容,很适合入门学习。是面向Spark开发者的一本实用参考书,结合实例全面系统的介绍了Spark工具的开发与使用。全书包括五章内容,第一章介绍Spark生态圈以及SparkRDD的编程模型等内容;第二章介绍SparkRDD实战案例与解析,包含Spark应用程序的部署、Spark的各种应用案例与解析、…

    2022年5月2日
    23
  • 使用maven打包jar_两个java文件打包成jar

    使用maven打包jar_两个java文件打包成jar目录打包方法方法一:使用maven-jar-plugin和maven-dependency-plugin方法二:使用maven-assembly-plugin(推荐)方法三:使用maven-shade-plugin方法四:使用onejar-maven-plugin方法五:使用spring-boot-maven-plugin方法六:使用tomcat7-maven-plugin参考打包方法方法一:使用maven-jar-plugin和maven-dependenc.

    2022年10月4日
    2
  • C语言打开文件详解

    C语言打开文件详解C语言中操作文件之前必须先打开文件;所谓“打开文件”,就是让程序和文件建立连接的过程。打开文件之后,程序可以得到文件的相关信息,例如大小、类型、权限、创建者、更新时间等。在后续读写文件的过程中,程序还可以记录当前读写到了哪个位置,下次可以在此基础上继续操作。 标准输入文件stdin(表示键盘)、标准输出文件stdout(表示显示器)、标准错误文件stderr(表示显示器)是由系统打开的,…

    2022年10月14日
    3
  • 简单的制作一个钓鱼网页游戏_简单网页制作代码

    简单的制作一个钓鱼网页游戏_简单网页制作代码网络钓鱼,一个价值很高的词语!如果你曾读过我的一篇文章《价值30亿美元的资料被窃取,网络钓鱼到底有多可怕!》就会知道,网络钓鱼到底有多”值钱”!如果对网络钓鱼这个词进行解释的话,简而言之,其就是一种黑客手段,或者是一种通过假装自己是受信任的实体来欺骗他人来获取凭据(账号、密码等信息)的方法。讲白话,都能听懂的就是去仿作一个和正规网站一样的登录页面,欺骗用户进行输入从而达到获取信息的目的!…

    2022年8月24日
    8
  • SpringBoot源码核心源码讲解

    SpringBoot源码核心源码讲解SpringBoot核心流程源码讲解

    2022年5月1日
    54

发表回复

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

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