我正在构建一个上传功能,以便在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中是否有内置支持来进行此类验证?