PHPExcel-删除整行

问题描述 投票:0回答:1

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

  }

} 
php phpexcel
1个回答
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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.