larave5.6 将Excel文件数据导入数据库代码实例
- <?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文件数据导入数据库代码实例的更多相关文章
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- 将Excel中数据导入数据库(一)
在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...
- 将Excel中数据导入数据库(三)
上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...
- 将Excel中数据导入数据库(二)
在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...
- Excel表数据导入数据库表中
***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...
- 将Excel文件数据导入到SqlServer数据库的三种方案
方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server,这种方法的优点是非常的灵活,可以对Excel表中的各个单元格进行用户所需的操作. openFil ...
- java读取excel文件数据导入mysql数据库
这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...
- Excel文件数据导入到后台保存倒数据库
后台代码数据解析: 方法一: (简单点) import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermo ...
- 将 excel文件数据导入MySQL数据库中
第一步:先将Excel文件另存为文本文件(制表符分割) 第二步:将生成的txt文件另存,并修改编码格式utf8; 第三步:将文件放到指定位置,或自己想要的位置: G:\city.txt 第四步:避免创 ...
随机推荐
- Codeforces 608E. Marbles
E. Marbles time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
- PHP之文件目录基础操作方法
1.文件的属性信息获取 首先文件具有类型,在linux下边,有block(块设备,如磁盘分区.CD-ROM).char(以字符为输入的设备,如键盘.打印机).dir(目录类型,目录也是文件的一种).f ...
- LUOGU P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
传送门 解题思路 记忆化搜索,如果搜到环,就将环的大小处理出来. 代码 #include<iostream> #include<cstdio> #include<cstr ...
- 关于background-image调整大小和位置的方法笔记
遇到background-image的问题有点多,直接上网搜资料自己整理一下 <!DOCTYPE html> <html lang="en"> <he ...
- excel怎么制作三维圆环图表
excel怎么制作三维圆环图表 excel怎么制作三维圆环图表?excel中想要制作一个三维圆环图表,该怎么制作呢?下面我们就来看看详细的教程,很简单,在Excel中,可以通过自带的圆环图功能生成二维 ...
- WebWork(在主线程创建子进程)
WebWork浅谈 前言: 都知道JS是单线程语言,最让人头疼的莫过于在网络正常的情况下经常出现页面的假死, 以及在进行大量的for循环计算时会导致线程阻塞,由于要进行大量的计算JS后面的运行会被阻隔 ...
- Leetcode706.Design HashMap设计哈希映射
不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get(key ...
- ajax嵌套陷阱
ajax嵌套陷阱 $('.ajaxupd').click(function () { $('.shadow1').show(); $('.update').show(); var tds=$(this ...
- JavaScript 开发的40个经典技巧
首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. 使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但===和 ...
- oracle怎么捕获表上的DML语句(不包括select)语句)
可以采用dml触发器,如 CREATE OR REPLACE TRIGGER tr_capt_sql BEFORE DELETE OR INSERT OR UPDATE ON manager.test ...