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)
上一篇 2021年10月24日 下午6:00
下一篇 2021年10月24日 下午6:00


相关推荐

  • dfa算法c语言,用c语言采用模拟dfa算法编写一个扫描器.docx

    用C语言米用模拟DFA算法编写一个扫描器/*第一章:相关知识DFA定义:一个确定的有穷自动机(DFA)M是一个五元组:M=(K,厶f,S,Z)其中0K是一个有穷集,它的每个元素称为一个状态;工是一个有穷字母表,它的每个元素称为一个输入符号,所以也称工为输入符号字母表;f是转换函数,是KX》tK的映射,即,如f(ki,a)=kj,(ki€K,kj€K)就意味着,当前状态…

    2022年4月8日
    40
  • TTL与RS-232电平转换芯片MAX232/MAX3232「建议收藏」

    TTL与RS-232电平转换芯片MAX232/MAX3232「建议收藏」TTL电平标准:输出L:2.4V             输入L:2.0V RS-232标准:逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V    MAX232供电电压只能是5V的,也就是说对于3.3V的系统,最好采用宽电压的MAX3232,电压范围3V~5V,而管脚是兼容的,只是电容的选取有所不同。 电容的选取如下:

    2022年8月10日
    12
  • Word域的应用和详解

    Word域的应用和详解本文主要内容:域基础通用域开关表格操作符和函数编号域  ■第一章域基础一、域的作用  微软的文字处理软件MicrosoftWord系列,其方便和自动化程度是其他任何文字处理软件所望尘莫及的。究其原因,其一,微软有强大的软件开发技术人员队

    2022年6月12日
    46
  • 蓝墨云班课php答案,蓝墨云班课试题库答案

    蓝墨云班课php答案,蓝墨云班课试题库答案蓝墨云班课试题库答案官网安卓版 是一款智能的定位在手机端的线上教学助手 App 是一款功能性非常强大的线上学习类的工具助手 能很好的方便教师进行备课 学生在完成学业后 在家中也能进行线上高效的学习 更能较为高效的进行对自己的线上课程进行管理 与老师机进行实时的互动 蓝墨云班课试题库答案特色 1 线上对综合相关的教育教学活动 能及时的进行管理学员信息 2 采用了全新的线上教学的新模式 将会使学员们进行

    2026年3月19日
    2
  • 文章章节常用序号编排(数字序号顺序)

    文章章节常用序号编排(数字序号顺序)因为一直觉得自己的文章序号很乱 遂在网上找了篇序号说明文档 以后自己写的文章将参照此标准 一 序号序号 SequenceNumb 有顺序的号码 如数字序号 1 2 3 大写汉字也算数字序号 如 一 二 三 序号可以清晰的分清同一类事物 也可以用序号作文章的小标题 我们在写文章 特别是在写论文中经常会用一些数字序号 正确地运用序号 能使我们的文章层次清楚 逻辑分明 便于读者阅读和引述

    2026年3月18日
    2
  • 三角形面积的计算公式小学_正三角形面积公式

    三角形面积的计算公式小学_正三角形面积公式1、三角形面积=1/2*底*高(三边都可做底)2、三角形面积=1/2absinC=1/2acsinB=1/2bcsinA3、三角形面积=abc/4R(其中R是三角形外接圆半径)你看看理解一下,其中1是比较常用的。4、三角形面积S=√x*(x-a)*(x-b)*(x-c)其中"√"是大根号,”x”为三角形周长的一半,a,b,c为边长三角形的面积的平方=p(p-a)(p-b)(p-

    2025年6月3日
    4

发表回复

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

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