Мне нужно решение для загрузки файла Excel, где находится в столбце Список почтовых адресов, которые необходимо проверить.
Теперь мне нужно удалить все адреса 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);
Это вернет 2d массив или строки и столбцы, проиндексированные от 0 для каждой строки; Вы можете кормить это array column()
чтобы получить простой 1-й массив.
$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);
}
}
Других решений пока нет …