如何验证数据以确保只使用PHPExcel在数据库中上传允许的字符串

时间:2016-05-01 10:34:54

标签: php phpexcel

我正在构建一个上传功能,以便在codeigniter应用程序中将客户端数据导入MySQL数据库。为了打开,读取和处理从excel到MySQL数据库的数据,我使用的是PHPExcel Library。

上传的要求之一是脚本应该只允许PHPExcel读取的列中的某些值。如果提供了任何非允许值,则脚本应拒绝该行。

例如:我有一个名为panStatus的属性(客户端表中的列)。我需要确保上传的excel文件只包含panStatus的两个可能值中的任何一个,即' Company'或者'非公司'。不应该将任何其他内容插入表格中。

我想出了以下代码,但我相信会有更好的方法来做同样的事情。

public function client_bulk_do_insert()
    {
        $result = $this->client_model->get_list_of_client_uploaded_files();
        if($result)
        {
            $this->load->library('PHPExcel');
            foreach ($result->result_array() as $row) {
                $file_id = $row['id'];
                $file_name = CLIENT_UPLOAD_FILE_PATH.$row['file_name'];
                $data = excelToArray($file_name);
                foreach ($data as $key => $actualArray) {
                    //perform validations
                    if(company_check($actualArray['nameClient']))
                    {
                        $error[] = 'Invalid Client Name or Client Already Present';
                    }

                    $pan_status = array('Company','Non Company');
                    $youtube_verified = array('No','Yes');
                    $client_status = array('NA','Partnership', 'Prop','Private Limited','Individual');
if(!array_search($actualArray['panStatus'],$pan_status))
                    {
                        $error[] = 'Invalid Pan Status Value';
                    }

                    if(!array_search($actualArray['youtubeVerified'],$youtube_verified))
                    {
                        $error[] = 'Invalid Youtube Verified Value';
                    }

                    if(!array_search($actualArray['clientStatus'],$client_status))
                    {
                        $error[] = 'Invalid Client Status Value';
                    }

                    $result = $this->client_model->create_new_client($data);

                }

            }
        }
    }

请注意实际上我必须在22列上传的工作表上进行此类验证,输入至少1500行。 PHPExcel中是否有内置支持来进行此类验证?

0 个答案:

没有答案