thinkphp5 , tp5 导入 Excel ,phpExcel 插件使用,文件上传

来源:互联网 发布:云计算有什么意义 编辑:程序博客网 时间:2024/06/07 21:00

HTML

<form action="/index.php?m=Admin&c=TaoBao&a=do_upload" enctype="multipart/form-data" method="post" style="display: none;" id="uploadForm">    <input type="file" name="excel" id="file_excel" value="" onchange="select_file_excel()"/>    <a class="btn red" onclick="file_excel()"><i class="fa fa-fax"></i>导入数据</a></form>

JS

 //导入excel    function file_excel(){       $("#file_excel").click();    }    //选择文件    function select_file_excel() {        $.ajax({            url: '你的上传路径',            type: 'POST',            cache: false,            data: new FormData($('#uploadForm')[0]),            dataType:'json',            processData: false,            contentType: false,            success:function(json){                //清空内容                $("#file_excel").val('');                //返回提示信息                //todo 待处理代码            }        });    }

PHP

<?phpnamespace app\admin\controller;use think\Db;//此父类可能有变动,自行修改class TaoBao extends Base{    public function do_upload(){        //引入文件(把扩展文件放入vendor目录下,路径自行修改)        vendor("PHPExcelClass.PHPExcel");        //获取表单上传文件        $file = request()->file('excel');        $info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public' . DS . 'upload' . DS . 'TaoBao');        //数据为空返回错误        if(empty($info)){            $output['status'] = false;            $output['info'] = '导入数据失败~';            $this->ajaxReturn($output);        }        //获取文件名        $exclePath = $info->getSaveName();        //上传文件的地址        $filename = ROOT_PATH . 'public' . DS . 'upload' . DS . 'TaoBao'. DS . $exclePath;        //判断截取文件        $extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) );        //区分上传文件格式        if($extension == 'xlsx') {            $objReader =\PHPExcel_IOFactory::createReader('Excel2007');            $objPHPExcel = $objReader->load($filename, $encode = 'utf-8');        }else if($extension == 'xls'){            $objReader =\PHPExcel_IOFactory::createReader('Excel5');            $objPHPExcel = $objReader->load($filename, $encode = 'utf-8');        }        $excel_array = $objPHPExcel->getsheet(0)->toArray();   //转换为数组格式        array_shift($excel_array);  //删除第一个数组(标题);        $city = [];        foreach($excel_array as $k=>$v) {            if(empty(Db::name('excel_shop')->where(['goods_id'=>$v[0]])->value('name'))){                $city[$k]['goods_id'] = $v[0];                //$city[$k]['xxx'] = $v[1];                  //$city[$k]['xxx'] = $v[2];             }        }        Db::name('excel_shop')->insertAll($city); //批量插入数据        $output['status'] = true;        $output['info'] = '导入数据成功~';        $this->ajaxReturn($output);    }}
原创粉丝点击