1. <?php
  2.  
  3. namespace App\Admin\Controllers;
  4.  
  5. use App\AdminUser;
  6. use Illuminate\Http\Request;
  7.  
  8. use Excel;
  9. use Illuminate\Support\Facades\DB;
  10. use Illuminate\Support\Facades\Input;
  11. use Illuminate\Support\Facades\Schema;
  12. use Illuminate\Database\Schema\Blueprint;
  13.  
  14. class ExcelController extends Controller
  15. {
  16. //
  17. public function index()
  18. {
  19. return view('admin/excel/index');
  20. }
  21.  
  22. //导出
  23. public function export(Request $request)
  24. {
  25. /* $cellData = array(['学号', '姓名', '成绩'], ['10001', 'AAAAA', '99']);
  26. Excel::create('学生成绩', function ($excel) use ($cellData) {
  27. $excel->sheet('score', function ($sheet) use ($cellData) {
  28. $sheet->rows($cellData);
  29. });
  30. })->export('xls');*/
  31.  
  32. //方法二:
  33. $users = AdminUser::all()->toArray();
  34. $header[] = array('ID号', '姓名', '邮箱', '创建时间', '状态');
  35. $arr = array();
  36. foreach ($users as $one) {
  37. $data = array($one['id'], $one['name'], $one['email'], $one['created_at'], $one['status']);
  38. array_push($arr, $data);
  39. }
  40. $arrData = array_merge($header, $arr);
  41.  
  42. Excel::create(iconv('UTF-8', 'UTF-8', '管理员表'), function ($excel) use ($arrData) {
  43. $excel->sheet('score', function ($sheet) use ($arrData) {
  44. $sheet->rows($arrData);
  45. });
  46. })->store('xlsx')->export('xlsx');
  47. }
  48.  
  49. //导入
  50. public function import(Request $request)
  51. {
  52. /*$filePath = 'storage/exports/' . iconv('UTF-8', 'GBK', '学生成绩') . '.xls';
  53. Excel::load($filePath, function ($reader) {
  54. $data = $reader->all();
  55. dd($data);
  56. });*/
  57.  
  58. // $file=Input::file('file'); dd(base_path());
  59. $file = $request->file('file');
  60. $tabl_name = date('YmdHis', time()) . rand(100, 999);
  61. $entension = $file->getClientOriginalExtension(); //上传文件的后缀.
  62. $new_name = $tabl_name . '.' . $entension;
  63. if ($file->isValid()) {
  64. $path = $request->file('file')->storeAs('import', $new_name);
  65. // 更新文件本地地址 storage/import/20180720105908.xlsx
  66. $path = '/public/storage/' . $path;
  67. // dd($path); ///public/storage/import/20180720124843.xlsx"
  68. Excel::load($path, function ($reader) use ($tabl_name) {
  69. //$data = $reader->all();
  70. //获取Excel的第几张表
  71. $reader = $reader->getSheet(0);
  72. //获取表中数据
  73. $data = $reader->toArray();
  74. // dd($data);
  75. $result = $this->create_table($tabl_name, $data);
  76. // dd($result);
  77. });
  78. }
  79.  
  80. return redirect('/admin/files');
  81. }
  82.  
  83. //创建表
  84. public function create_table($table_name, $field_arr)
  85. {
  86. $tmp = $table_name;
  87. $val = $field_arr;
  88. //创建表结构 因为已经有db_import表不再需要执行创建表结构程序。
  89. //注意Excel标题最好是英文
  90. /* $tables = DB::select("show tables");
  91. $tables = array_column($tables, 'Tables_in_blog');*/
  92. $tables = array_map('reset', \DB::select('SHOW TABLES'));
  93. if (!in_array('db_import', $tables)) {
  94. Schema::dropIfExists('db_import');
  95. Schema::create("db_import", function (Blueprint $table) use ($tmp, $val) {
  96. $fields = $val[0]; //列字段
  97. $table->increments('id'); //主键
  98. foreach ($fields as $key => $value) {
  99. $table->string($fields[$key]);
  100. }
  101. });
  102. }
  103.  
  104. //填充数据
  105. $value_str = array();
  106. if ($id = DB::table('db_import')->max('id')) {
  107. $id = $id + 1;
  108. } else {
  109. $id = 1;
  110. }
  111. //$id = DB::table('db_import')->max('id') ? DB::table('db_import')->max('id') + 1 : 1;
  112. foreach ($val as $key => $value) {
  113. if ($key != 0) {
  114. // $content = implode(',', $value);
  115. // $content2 = explode(',', $content);
  116. foreach ($value as $key2 => $va2) {
  117. if (!empty($va2)) {
  118. $value_str[] = "'$va2'";
  119. }
  120. }
  121. $news = implode(',', $value_str);
  122. if (!empty($news)) {
  123. $news = "$id," . $news;
  124. DB::insert("insert into db_import VALUES ($news)");
  125. }
  126.  
  127. $value_str = array();
  128. $id = $id + 1;
  129. }
  130. }
  131. return $id;
  132. }
  133.  
  134. }

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. 关于Vector CANoe的讨论

    默认排序​ 踩猫尾巴 汽车电子攻城狮 27 人赞同了该回答 好像是很久以前的问题啊,为什么会现在收到邀请. 我觉得 @lijuqqkiko 介绍的足够啦. 我再额外发散一点吧. 目前在CAN总线测试和 ...

  2. Html5知识点以及兼容性

    什么的HTNL5? HTML5 是最新的 HTML 标准. HTML5 是专门为承载丰富的 web 内容而设计的,并且无需额外插件. HTML5 拥有新的语义.图形以及多媒体元素. HTML5 提供的 ...

  3. php语言的核心知识点

    PHP:脚本语言,网站建设,服务器端运行PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的.面向对象的.解释型的.健壮的.安全的.性能非常之高的.独立于架构的.可移植的.动态的脚本语言 ...

  4. layer弹出图片的问题

    转载:https://blog.csdn.net/qq_41815146/article/details/81141088 layer下载地址:http://layer.layui.com/ jQue ...

  5. pl/sql基础知识—函数快速入门

    n  函数 函数用于返回特定的数据,当建立函数式,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据,我们可以使用create function来建立函数,实际案例: ...

  6. 如何在Liferay 7中创建一个简单的JSF Portlet

    这个将在Liferay IDE 3.1 M3的发布版中提供创建的选项,但是你也可以通过命令行来创建. 1.这是Liferay JSF团队的官网:http://liferayfaces.org/ 你能在 ...

  7. Linux 下的mysql+centos7+主从复制

    mysql+centos7+主从复制   MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公 ...

  8. python的sorted排序具体解释

    排序.在编程中常常遇到的算法.我也在几篇文章中介绍了一些关于排序的算法. 有的高级语言内置了一些排序函数.本文讲述Python在这方面的工作.供使用python的程序猿们參考,也让没有使用python ...

  9. 机房收费系统——技术总结 标签: vb数据库技术 2014-09-07 22:29 1153人阅读 评论(30)

    说完了经验,再谈谈技术方面,其实对于技术,师哥师姐们都已经写了好多博客,这也是我在敲机房几乎没写这方面的博客的原因,不过别人的再好也是别人的,下面说说自己的. (一)数据库的设计 其实虽然说是数据库的 ...

  10. Effective C++: 01让自己习惯C++

    01:视C++为一个语言联邦 1:今天的C++已经是个多重范型编程语言(multiparadigm programming language),一个同时支持过程形式(procedural).面向对象形 ...