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

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

<?php
namespace 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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值