我需要上传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);
}
}
答案 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);
}
}