<?php

namespace App\Admin\Controllers;

use App\AdminUser;
use Illuminate\Http\Request; use Excel;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint; class ExcelController extends Controller
{
//
public function index()
{
return view('admin/excel/index');
} //导出
public function export(Request $request)
{
/* $cellData = array(['学号', '姓名', '成绩'], ['10001', 'AAAAA', '99']);
Excel::create('学生成绩', function ($excel) use ($cellData) {
$excel->sheet('score', function ($sheet) use ($cellData) {
$sheet->rows($cellData);
});
})->export('xls');*/ //方法二:
$users = AdminUser::all()->toArray();
$header[] = array('ID号', '姓名', '邮箱', '创建时间', '状态');
$arr = array();
foreach ($users as $one) {
$data = array($one['id'], $one['name'], $one['email'], $one['created_at'], $one['status']);
array_push($arr, $data);
}
$arrData = array_merge($header, $arr); Excel::create(iconv('UTF-8', 'UTF-8', '管理员表'), function ($excel) use ($arrData) {
$excel->sheet('score', function ($sheet) use ($arrData) {
$sheet->rows($arrData);
});
})->store('xlsx')->export('xlsx');
} //导入
public function import(Request $request)
{
/*$filePath = 'storage/exports/' . iconv('UTF-8', 'GBK', '学生成绩') . '.xls';
Excel::load($filePath, function ($reader) {
$data = $reader->all();
dd($data);
});*/ // $file=Input::file('file'); dd(base_path());
$file = $request->file('file');
$tabl_name = date('YmdHis', time()) . rand(100, 999);
$entension = $file->getClientOriginalExtension(); //上传文件的后缀.
$new_name = $tabl_name . '.' . $entension;
if ($file->isValid()) {
$path = $request->file('file')->storeAs('import', $new_name);
// 更新文件本地地址 storage/import/20180720105908.xlsx
$path = '/public/storage/' . $path;
// dd($path); ///public/storage/import/20180720124843.xlsx"
Excel::load($path, function ($reader) use ($tabl_name) {
//$data = $reader->all();
//获取Excel的第几张表
$reader = $reader->getSheet(0);
//获取表中数据
$data = $reader->toArray();
// dd($data);
$result = $this->create_table($tabl_name, $data);
// dd($result);
});
} return redirect('/admin/files');
} //创建表
public function create_table($table_name, $field_arr)
{
$tmp = $table_name;
$val = $field_arr;
//创建表结构 因为已经有db_import表不再需要执行创建表结构程序。
//注意Excel标题最好是英文
/* $tables = DB::select("show tables");
$tables = array_column($tables, 'Tables_in_blog');*/
$tables = array_map('reset', \DB::select('SHOW TABLES'));
if (!in_array('db_import', $tables)) {
Schema::dropIfExists('db_import');
Schema::create("db_import", function (Blueprint $table) use ($tmp, $val) {
$fields = $val[0]; //列字段
$table->increments('id'); //主键
foreach ($fields as $key => $value) {
$table->string($fields[$key]);
}
});
} //填充数据
$value_str = array();
if ($id = DB::table('db_import')->max('id')) {
$id = $id + 1;
} else {
$id = 1;
}
//$id = DB::table('db_import')->max('id') ? DB::table('db_import')->max('id') + 1 : 1;
foreach ($val as $key => $value) {
if ($key != 0) {
// $content = implode(',', $value);
// $content2 = explode(',', $content);
foreach ($value as $key2 => $va2) {
if (!empty($va2)) {
$value_str[] = "'$va2'";
}
}
$news = implode(',', $value_str);
if (!empty($news)) {
$news = "$id," . $news;
DB::insert("insert into db_import VALUES ($news)");
} $value_str = array();
$id = $id + 1;
}
}
return $id;
} }

larave5.6 将Excel文件数据导入数据库代码实例的更多相关文章

  1. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  2. 将Excel中数据导入数据库(一)

    在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...

  3. 将Excel中数据导入数据库(三)

    上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...

  4. 将Excel中数据导入数据库(二)

    在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...

  5. Excel表数据导入数据库表中

    ***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...

  6. 将Excel文件数据导入到SqlServer数据库的三种方案

    方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server,这种方法的优点是非常的灵活,可以对Excel表中的各个单元格进行用户所需的操作. openFil ...

  7. java读取excel文件数据导入mysql数据库

    这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...

  8. Excel文件数据导入到后台保存倒数据库

    后台代码数据解析: 方法一: (简单点) import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermo ...

  9. 将 excel文件数据导入MySQL数据库中

    第一步:先将Excel文件另存为文本文件(制表符分割) 第二步:将生成的txt文件另存,并修改编码格式utf8; 第三步:将文件放到指定位置,或自己想要的位置: G:\city.txt 第四步:避免创 ...

随机推荐

  1. 洛谷P1315 [NOIP2011提高组Day2T3] 观光公交

    P1315 观光公交 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号 ...

  2. 【 USACO11JAN】 利润 【洛谷P3009】

    P3009 [USACO11JAN]利润Profits 题目描述 The cows have opened a new business, and Farmer John wants to see h ...

  3. 洛谷P1368 均分纸牌(加强版) [2017年6月计划 数论14]

    P1368 均分纸牌(加强版) 题目描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,纸牌总数必为 N 的倍数.可以在任一堆上取1张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取 ...

  4. angular依赖注入(3) —— 的提供商

    一.注册商必须写在NgModel当中,不然只能对当前组件注入 二.写法: 1.令牌:providers:[Logger,Data] 2.供应商定义对象:providers:[{provide:Logg ...

  5. CSS hack处理

    css hack指各版本及各品牌浏览器之间对CSS解释后出现网页内容的误差. 各浏览器CSS解析: 1.大部分特殊字符IE浏览器支持,其他主流浏览器firefox,chrome,opera,safar ...

  6. 多线程 多进程 协程 Queue(爬虫代码)

    快速理解多进程与多线程以及协程的使用场合和特点 首先我们来了解下python中的进程,线程以及协程! 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务.一个CPU,在一个时间切片里只能运 ...

  7. Google搜索技巧-入门篇

    基本搜索 Google 查询简洁方便,仅需输入查询内容并敲一下回车键 (Enter),或单击“Google 搜索”按钮即可得到相关资料. 搜索两个及两个以上关键字 Google 只会返回那些符合您的全 ...

  8. oracle 索引监控

           索引对于在大量数据里检索出少量数据库的查询操作来说是高效的,可是对于DML操作来说.却是负面的:①其对于insert 操作的反面影响最大.该表的索引越多,更新的索引越多,insert 操 ...

  9. sqlserver 取月初月末的时间

    1.取月初的时间   --getdate() :2012/05/08  19:29:00 select convert(varchar,dateadd(day,-day(getdate())+1,ge ...

  10. WCF ChannelFactory

    public static class WcfExtensions{    public static void Using<T>(this T client, Action<T&g ...