PHPExcel-删除整行

时间:2017-12-19 17:03:29

标签: php phpexcel

我需要上传excel文件的解决方案,其中列A列需要检查的邮件地址列表。 现在,我必须删除A列中的所有Gmail地址。

我制作了一些代码,但它没有删除该行中的所有Gmail地址,我认为该脚本删除了包含Gmail的每一行。

有人可以检查并帮助我吗?

这是我的代码:

// setup columns and rows for loop

$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

//define $results from rows as array
$result = []; 


//loop column A and get values from each row in Array $results

for($row = 1; $row <= $highestRow; ++$row) {

$result[] = $sheet->getCell('A' .$row)->getValue(); 

}


//remove gmail adresses in rows

foreach($result as $gmail){

if(preg_match('/gmail.com/', $gmail)) {

$objPHPExcel->getActiveSheet()->removeRow($row);

  }

} 

1 个答案:

答案 0 :(得分:0)

首先:

//define $results from rows as array
$result = []; 


//loop column A and get values from each row in Array $results

for($row = 1; $row <= $highestRow; ++$row) {

$result[] = $sheet->getCell('A' .$row)->getValue(); 

}

可以替换为

$result = $sheet->rangeToArray('A1:A'.$highestRow);

这将返回一个2d数组或行和列,每行的索引为0;您可以将其提供给array column()以获得简单的一维数组。

$result = array_column($sheet->rangeToArray('A1:A'.$highestRow), 0);

然后你需要反转数组,保留键,以便从下到上遍历它:

$result = array_reverse($result, true);

遍历数组时,需要检索密钥和值,因为这样可以识别行号:

foreach($result as $reference => $gmail){
    if(preg_match('/gmail.com/', $gmail)) {
        $row = $reference + 1; // adjust the array key to the row number
        $objPHPExcel->getActiveSheet()->removeRow($row);
    }
}