thinkphp5中用PHPExcel导入数据

我觉得自己上次写的跟狗屎一样,不清不楚,自己拿着还是捣鼓了将近10分钟才弄出来,不划算,这次整个全套的

前期准备工作

1.首先在PHPExcel官网上面下载安装包下载地址为:https://github.com/PHPOffice/PHPExcel

将下载下来的安装包解压后,如下图所示,

thinkphp5中用PHPExcel导入数据_第1张图片

只需要里面的classes文件夹,将classes文件重命名为PHPExcel

2.将重命名后的classes文件夹(即PHPExcel)复制到tp5框架下的vendor文件下

thinkphp5中用PHPExcel导入数据_第2张图片

开发步骤:

第一步:前端写个上传文件

直接贴代码:



    
    Title



第二步:建立控制器,写好接口
fetch('import');
    }

    public function import()
    {
        //引入PHPExcel
        header("content-type:text/html; charset=utf-8");
        vendor("PHPExcel.PHPExcel");
        $file = request()->file('file');
        //  var_dump($file);exit();
        // 移动到框架应用根目录/public/uploads/ 目录下
        if ($file) {
            $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
            if ($info) {
                $filename = ROOT_PATH . 'public' . DS . 'uploads' . DS . $info->getSaveName();
            } else {
                // 上传失败获取错误信息
                return array("resultcode" => -4, "resultmsg" => "文件上传失败", "data" => $file->getError());
            }
            $extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
            if ($extension == 'xlsx') {
                $PHPReader = new \PHPExcel_Reader_Excel2007();
            } else if ($extension == 'xls') {
                $PHPReader = new \PHPExcel_Reader_Excel5();
            } else if ($extension == 'csv') {
                $PHPReader = new \PHPExcel_Reader_CSV();
            }

            //区分上传文件格式
          /*  if($extension == 'xlsx') {
                $PHPReader =\PHPExcel_IOFactory::createReader('Excel2007');
            }else if($extension == 'xls') {
                $PHPReader = \PHPExcel_IOFactory::createReader('Excel5');
            }*/

            if (file_exists($filename)) {//文件上传成功
                $filename = iconv('utf-8', 'gbk', $filename);
                if (file_exists($filename)) {//如果文件存在
                    // $PHPReader = new \PHPExcel_Reader_Excel5();
                    //载入excel文件
                    $PHPExcel = $PHPReader->load($filename);
                    $sheet = $PHPExcel->getActiveSheet(0);//获得sheet
                    $highestRow = $sheet->getHighestRow(); // 取得共有数据数
                    $data = $sheet->toArray();
                    for ($i = 1; $i < $highestRow; $i++) {

                        //这里的处理逻辑根据自己的需求来
                    }
                } else {
                    return array("resultcode" => -5, "resultmsg" => "文件不存在", "data" => null);
                }
            }
        }
    }
}

你可能感兴趣的:(php,thinkphp5.0)