啊哈??PHP開發#導入excel數據到數據庫如此簡單!?

跟大家一起來討論下如何把excel數據導入到數據庫,廢話少說,直接上乾貨。

1,首先大家先到網上下載phpExcel 代碼包。

下載PHPExcel了擴展http://phpexcel.codeplex.com/

好了,下載需的工具自個兒去找吧,我就不跟你起鬨了,廢話少說直接上代碼!!!

後端(ThinkPHP v6):

<?php

namespace api\admin\controller;

use think\admin\Controller;
use vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet;
use vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\IOFactory;

class WithdrawalMoney extends Controller
{
    protected $table = 'withdrawal_money';

    public function excel_import()
    {
        ini_set('memory_limit', '1024M');

        require root_path() . "vendor/PHPExcel/Classes/PHPExcel.php";
        require root_path() . "vendor/PHPExcel/Classes/PHPExcel/IOFactory.php";
        header("Content-type:text/html;charset=utf-8");

        //實例化主文件
        $file = $_FILES['file'];//接收前臺傳過來的execl文件
        //截取文件的後綴名,轉化成小寫
        $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
        if ($extension == "xlsx") {
            //2007(相當於是打開接收的這個excel)
            $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
        } else {
            //2003(相當於是打開接收的這個excel)
            $objReader = \PHPExcel_IOFactory::createReader('Excel5');
        }
        $objContent = $objReader->load($file['tmp_name']);
        if ($objContent) {
            $sheetContent = $objContent->getSheet(0)->toArray();
            $operator = $this->getUserId();//操作者
            //刪除第一行標題
            unset($sheetContent[0]);

            foreach ($sheetContent as $k => $v) {
                $userId = $this->app->db->name('tth_user')->where(['userPhone' => $v[1]])->value('userId');
                $arr['userPhone'] = $v[1];
                $arr['withdrawal'] = $v[2];
                $arr['createTime'] = time();
                $arr['operator'] = $operator;
                $arr['userId'] = $userId ?? null;
                $res[] = $arr;
            }
            //執行寫入
            $re = $this->app->db->name($this->table)->insertAll($res);
            if ($re) {
                $this->success('導入成功 !');
            } else {
                $this->error('導入失敗 !');
            }
        } else {
            $this->error('請導入表格 !');
        }
    }

}

前端代碼(layui):

<fieldset>
    <legend>條件搜索</legend>
    <form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false"
          method="get" autocomplete="off">

        <div class="layui-form-item layui-inline">
            <label class="layui-form-label">創建時間</label>
            <div class="layui-input-inline">
                <input data-date-range name="createTime" value="{:input('get.createTime')}" placeholder="請選擇創建時間"
                       class="layui-input">
            </div>
        </div>

        <div class="layui-form-item layui-inline">
            <button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
            <a class="layui-btn layui-btn-primary import_btn" data-type="imports">導入數據</a>
        </div>
    </form>
</fieldset>

<script>
    window.form.render();
    //點擊開始上傳文件操作
    layui.use(['upload'], function () {
        var upload = layui.upload;
        upload.render({
            elem: '.import_btn',
            url: "{:url('WithdrawalMoney/excel_import')}",
            accept: 'file',  //普通文件
            exts: 'xls|excel|xlsx', //允許的文件後綴
            before: function () {
                uploadIndex = layer.msg('上傳中,請稍後...', {time: 0, icon: 16, shade: 0.01})
            },
            done: function (res, index, upload) {
                //執行導入接口後操作
                if (res.code == 1) {
                    parent.layer.msg("上傳成功!", {time: 1000}, function () {
                        //重新加載父頁面
                        window.location.reload();
                    });
                }
            },
            error: function (index, upload) {
                layer.msg('上傳失敗!');
            },
        });
    })
</script>

注意:引入PHPExcel插件的時候要注意路徑。

效果圖:

好了,導入excel數據到數據庫就是如此簡單,有需要的可以收藏,轉載,PS:請支持原創,轉載請標明出處,告辭!!!

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章