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


相关推荐

  • python官网下载步骤图解-如何下载安装python 看完你就知道了[通俗易懂]

    python官网下载步骤图解-如何下载安装python 看完你就知道了[通俗易懂]工具/材料windows系统电脑操作方法01首先,在python的官网下载python版本,需要下载你电脑对应的版本,在【计算机】-【属性】中查看自己是32位还是64位操作系统(官网地址在网上自行搜索)。0232位和64位的版本安装起来没有区别,双击打开后,第一步要记得勾上AddpythontoPath选项,意思是把Python的安装路径添加到系统环境变量的Path变量中。然后选择自定义安…

    2022年4月30日
  • 通过PropertyDescriptor反映射调用set和get方法

    通过PropertyDescriptor反映射调用set和get方法1packagecom.zhoushun;importjava.lang.reflect.Method;importjava.lang.reflect.Field;importjava.beans.PropertyDescriptor;publicclassPropertyUtil{ @SuppressWarnings(“unchecked”) publicsta

    2022年10月1日
  • 科学计算机度转弧度,角度弧度换算器在线(70°角度转换弧度)

    科学计算机度转弧度,角度弧度换算器在线(70°角度转换弧度)1°=0.01745rad1rad=57.30°计算过程:1°=π/180≈0.01745rad1rad=180/π=57.30°扩展资料:数学上是用弧度而非角度,因为360的容易整除对数学不重要,而数.角度是DEG,弧度是RAD,梯度是GRA。转换模式的方法是按MODE,然后按相应的键。不同型号可能不一样求采纳!!!!!!!!!!1弧度=180/π度1度=…

    2022年6月30日
  • mysql8 2058_SQLyog连接MySQL8.0报2058错误的解决方案[通俗易懂]

    mysql8 2058_SQLyog连接MySQL8.0报2058错误的解决方案[通俗易懂]引言用SQLyog连接MySQL8.0(社区版:mysql-installer-community-8.0.15.0.msi),出现错误2058(Plugincaching_sha2_passwordcouldnotbeloaded:xxxx),通过查询资料了解了该错误的原因并在本文中提出了该问题的方案。原因该错误提示如下图所示:具体原因:新的MySQL8.0安装,在初始化数据目录时,…

    2022年10月2日
  • MSAgent 详细解说(下)

    MSAgent 详细解说(下)七、我的菜单右键点击角色是不是会弹出一个菜单?什么,只有Hide一项?想不想定义一个个性的菜单呢?js代码&lt;object style="visibility:hidden" id="MSAgent" classid="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F"&gt;&lt;/object&gt;  &lt;…

    2022年6月29日
  • js正则表达式语法大全_vb 正则表达式

    js正则表达式语法大全_vb 正则表达式 JavaScript正则表达式的用法正则表达式是一种可以用于模式匹配和替换的强大工具,在很多语言中都可以应用。JavaScript对正则表达式提供了很好的支持,Javascript中有一个正则表达式对象RegExp。该对象提供了大量的属性和方法来处理正则表达式,同时,String对象也提供了相关的方法来处理正则表达式,在Web应用中,经常使用正则表达式来验证用户输入的信息,例如在用

    2022年9月20日

发表回复

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

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