Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpexcel codeigniter验证检查一行中的单元格是否为空_Php_Codeigniter_Phpexcel_Codeigniter 3 - Fatal编程技术网

phpexcel codeigniter验证检查一行中的单元格是否为空

phpexcel codeigniter验证检查一行中的单元格是否为空,php,codeigniter,phpexcel,codeigniter-3,Php,Codeigniter,Phpexcel,Codeigniter 3,我在我的codeigniter 3中使用phpexcel具有“从excel导入”功能,但我想创建一个验证系统来检查某些单元格是否为空,并可以在数据导入到数据库之前检测哪些列和行为空。如果检测到,导入功能应停止 这是控制器: public function do_upload(){ $config['upload_path'] = './tempDat/'; $config['allowed_types'] = 'xlsx|xls'; $this->load-&

我在我的codeigniter 3中使用phpexcel具有“从excel导入”功能,但我想创建一个验证系统来检查某些单元格是否为空,并可以在数据导入到数据库之前检测哪些列和行为空。如果检测到,导入功能应停止

这是控制器:

public function do_upload(){


    $config['upload_path'] = './tempDat/';
    $config['allowed_types'] = 'xlsx|xls';

    $this->load->library('upload', $config);

    if ( ! $this->upload->do_upload()){
        $error = array('error' => $this->upload->display_errors());
    }
    else{
        $data = array('upload_data' => $this->upload->data());
        $upload_data = $this->upload->data(); 
        $filename = $upload_data['file_name'];
        $this->client->upload_data($filename);
      //  unlink('./tempDat/'.$filename);
        redirect('client/upload','refresh');
    }
}
以下是我已经尝试过的模型:

public function upload_data($filename){
    ini_set('memory_limit', '-1');
    $inputFileName = './tempDat/'.$filename;
    try {
    $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
    } catch(Exception $e) {
    die('Error loading file :' . $e->getMessage());
    }

    $worksheet = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);

    $numRows = count($worksheet);

    $objWorksheet = $objPHPExcel->getActiveSheet();
    $highestRow = $objWorksheet->getHighestRow(); 
    $highestColumn = $objWorksheet->getHighestColumn(); 


    for ($i=2; $i < ($numRows+1) ; $i++) { 

       $test = $objPHPExcel->getActiveSheet()->rangeToArray('A1:A'.$i);
 if( $test != NULL ) {  

        $ins = array(
                "eng_code"          => $worksheet[$i]["B"],
                "name_1"          => $worksheet[$i]["C"],
                "name_2"          => $worksheet[$i]["D"],
                "divisi"          => $worksheet[$i]["E"],
                "title"          => $worksheet[$i]["F"],
                "sex"                       => $worksheet[$i]["G"],
                "date_of_birth"          => $worksheet[$i]["H"],
                "date_of_commencement"          => $worksheet[$i]["I"],
                "salary_min_1"          => $worksheet[$i]["J"],
                "allowance_min_1"          => $worksheet[$i]["K"],
                "salary"          => $worksheet[$i]["L"],
                "allowance"          => $worksheet[$i]["M"],
                "termination_date"          => $worksheet[$i]["N"],
                "type_of_termination"          => $worksheet[$i]["O"],
                "manfaat_termination"          => $worksheet[$i]["P"],
                "basic_salary_at"          => $worksheet[$i]["Q"],
                "basic_allowance_at"          => $worksheet[$i]["R"],
                "status_employee_min_1"          => $worksheet[$i]["S"],
                "status_employee"          => $worksheet[$i]["T"],


               );


         $this->db->insert('tb_eec', $ins);
    } else {

        if( $test == NULL || $test == '') {

         $this->session->set_flashdata('pesan', '<div style="color:blue;"><b>Kolom '.$worksheet[1]["A"].' Baris '.$i.' Belum diisi !</b></div>');

         }
    }
    }
}
public函数上传数据($filename){
ini_集('内存限制','-1');
$inputFileName='./tempDat/'.$filename;
试一试{
$objPHPExcel=PHPExcel\u IOFactory::load($inputFileName);
}捕获(例外$e){
die('加载文件时出错:'.$e->getMessage());
}
$worksheet=$objPHPExcel->getActiveSheet()->toArray(null、true、true、true);
$numRows=计数($worksheet);
$objWorksheet=$objPHPExcel->getActiveSheet();
$highestRow=$objWorksheet->getHighestRow();
$highestColumn=$objWorksheet->getHighestColumn();
对于($i=2;$i<($numRows+1);$i++){
$test=$objPHPExcel->getActiveSheet()->rangeToArray('A1:A'.$i);
如果($test!=NULL){
$ins=数组(
“工程代码”=>$工作表[$i][“B”],
“name_1”=>$worksheet[$i][“C”],
“name_2”=>$worksheet[$i][“D”],
“divisi”=>$工作表[$i][“E”],
“title”=>$工作表[$i][“F”],
“sex”=>$worksheet[$i][“G”],
“出生日期”=>$WORKEY[$i][“H”],
“开工日期”=>$工作表[$i][“i”],
“工资最低值1”=>$WORKEY[$i][“J”],
“津贴最低额1”=>$工作表[$i][“K”],
“工资”=>$WORKEY[$i][“L”],
“津贴”=>$工作表[$i][“M”],
“终止日期”=>$工作表[$i][“N”],
“终止类型”=>$WORKEY[$i][“O”],
“manfaat_终止”=>$worksheet[$i][“P”],
“基本工资”=>$WORKEM[$i][“Q”],
“基本津贴”=>$WORKEY[$i][“R”],
“状态\u员工\u最小\u 1”=>$worksheet[$i][“S”],
“status_employee”=>$工作表[$i][“T”],
);
$this->db->insert('tb_eec',$ins);
}否则{
如果($test==NULL | |$test==''){
$this->session->set_flashdata('pesan','Kolom'.$sheet[1][“A”]。'Baris'.$i.'Belum diisi!');
}
}
}
}
我尝试了许多不同的方法,但结果总是一样的,我的函数总是继续导入数据,即使某些单元格是空的


请帮帮我:)

我认为这就是你想要的,对吗

$inserts = array();

for ($i=2; $i < ($numRows+1) ; $i++) { 

    $test = $objPHPExcel->getActiveSheet()->rangeToArray('A1:A'.$i);

    $do_insert = true;

    foreach (range('B','T') as $let){
        if (empty($worksheet[$i][$let])){
            $do_insert = false;
        }
    }

    if ($do_insert){
        $inserts[] = array(
            "eng_code"          => $worksheet[$i]["B"],
            "name_1"          => $worksheet[$i]["C"],
            "name_2"          => $worksheet[$i]["D"],
            "divisi"          => $worksheet[$i]["E"],
            "title"          => $worksheet[$i]["F"],
            "sex"                       => $worksheet[$i]["G"],
            "date_of_birth"          => $worksheet[$i]["H"],
            "date_of_commencement"          => $worksheet[$i]["I"],
            "salary_min_1"          => $worksheet[$i]["J"],
            "allowance_min_1"          => $worksheet[$i]["K"],
            "salary"          => $worksheet[$i]["L"],
            "allowance"          => $worksheet[$i]["M"],
            "termination_date"          => $worksheet[$i]["N"],
            "type_of_termination"          => $worksheet[$i]["O"],
            "manfaat_termination"          => $worksheet[$i]["P"],
            "basic_salary_at"          => $worksheet[$i]["Q"],
            "basic_allowance_at"          => $worksheet[$i]["R"],
            "status_employee_min_1"          => $worksheet[$i]["S"],
            "status_employee"          => $worksheet[$i]["T"],
        );
    }
}

if (count($inserts)){
    foreach ($inserts as $ins){
        $this->db->insert('tb_eec', $ins);
    }
} else {
    $this->session->set_flashdata('pesan', '<div style="color:blue;"><b>Kolom '.$worksheet[1]["A"].' Baris '.$i.' Belum diisi !</b></div>');
}
$inserts=array();
对于($i=2;$i<($numRows+1);$i++){
$test=$objPHPExcel->getActiveSheet()->rangeToArray('A1:A'.$i);
$do_insert=true;
foreach(范围('B','T')为$let){
如果(空($WORKSET[$i][$let])){
$do_insert=false;
}
}
如果($do_插入){
$inserts[]=数组(
“工程代码”=>$工作表[$i][“B”],
“name_1”=>$worksheet[$i][“C”],
“name_2”=>$worksheet[$i][“D”],
“divisi”=>$工作表[$i][“E”],
“title”=>$工作表[$i][“F”],
“sex”=>$worksheet[$i][“G”],
“出生日期”=>$WORKEY[$i][“H”],
“开工日期”=>$工作表[$i][“i”],
“工资最低值1”=>$WORKEY[$i][“J”],
“津贴最低额1”=>$工作表[$i][“K”],
“工资”=>$WORKEY[$i][“L”],
“津贴”=>$工作表[$i][“M”],
“终止日期”=>$工作表[$i][“N”],
“终止类型”=>$WORKEY[$i][“O”],
“manfaat_终止”=>$worksheet[$i][“P”],
“基本工资”=>$WORKEM[$i][“Q”],
“基本津贴”=>$WORKEY[$i][“R”],
“状态\u员工\u最小\u 1”=>$worksheet[$i][“S”],
“status_employee”=>$工作表[$i][“T”],
);
}
}
如果(计入($inserts)){
foreach($ins作为$ins插入){
$this->db->insert('tb_eec',$ins);
}
}否则{
$this->session->set_flashdata('pesan','Kolom'.$sheet[1][“A”]。'Baris'.$i.'Belum diisi!');
}

感谢您的回复,但不幸的是,这不是我想要的。。如果我有5行数据,即使每个单元格都不是空的,也只能向数据库插入一个数据。如果A3列有空单元格,它仍然会将第一行插入数据库。我想要的是,如果系统检测到任何空单元格,则不会向数据库插入任何数据。对不起,结果仍然相同。如果每个单元格都已完成,则只插入第一行,如果第二行的单元格为空,则系统仍会插入第一行。仅当一列全部为空(即B1:B5)时,它才起作用。有什么想法吗(啊,我明白了,如果系统发现空单元格,要停止所有进程,只需在检查$do_insert false或not时添加重定向即可。谢谢@AntonyGlad you got:o)