larave5.6 将Excel文件数据导入数据库代码实例

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文件数据导入数据库代码实例

larave5.6 将Excel文件数据导入数据库代码实例

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113088.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 制作PFX证书

    制作PFX证书1、创建根证书密钥文件root.keyC:\Users\lijunlin>opensslgenrsa-des3-outroot.keyGeneratingRSAprivatekey,2048bitlongmodulus…………………………………………………………….+++.+++eis65537(0x10001)Enterpassphraseforroot.k

    2022年6月7日
  • android源码学习-目录「建议收藏」

    android源码学习-目录「建议收藏」一年中感觉进步了不少,现在看android源码已经没有当初那么吃力了。但是和其他开发者的接触过程中,感觉自己对源码的了解还不是很透彻。android不需要所有的源码都去了解,但是几个重要的点的源码还是有必要理解清楚的。自己列了一个表,会去挨个的学习。1.android源码学习-事件分发处理机制2.android源码学习-View绘制流程3.android源码学习-activi…

    2022年6月5日
  • jquery+json实例

    jquery+json实例

    2021年8月12日
  • SpringBoot面试题及答案整理

    SpringBoot面试题及答案整理什么是SpringBootSpringBoot建立spring框架之上,使用spring启动,帮我们避免了大量的配置。因此,SpringBoot可以帮助我们以最少的工作量,更加健壮地使用现有的Spring功能。SpringBoot有哪些优点?1、减少开发,测试时间和努力。2、使用JavaConfig有助于避免使用XML。3、避免大量的Maven导入和各种版本冲突。4、提供意见发展方法。5、通过提供默认值快速开始开发。6、没有单独的Web服

    2022年5月11日
  • 股票模拟交易_JKI状态机

    股票模拟交易_JKI状态机给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。输入格式第一行包含整数 N,表示数组长度。第二行包含 N 个不超过 10000 的正整数,表示完整的数组。输出格式输出一个整数,表示最大利润。数据范围1≤N≤105输入样例:51

    2022年8月8日
  • JAVA学习笔记:目录

    JAVA学习笔记:目录目录java学习笔记1:了解java、JDK、JRE、JVMjava学习笔记2:JDK下载和安装以及测试控制台测试是否配置成功java学习笔记3:用记事本写第一个java程序,第一个java程序常见错误总结,第一个java程序详细解析java学习笔记4:常见的DOS命令和java开发工具java学习笔记5:eclipse的下载及使用,以及java程序的运行java学习笔记6:注释、标识…

    2022年10月7日

发表回复

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

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