PHPExcel-删除整行

PHPExcel- remove whole row

我需要一个上传 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);

  }

} 

开始于:

//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);

这将 return 一个二维数组或行和列,每行从 0 开始索引;您可以将其提供给 array column() 以获得简单的一维数组。

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

然后需要对数组进行反转,保留key,这样从下往上遍历:

$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);
    }
}