PHPExcel — удалить всю строку

Мне нужно решение для загрузки файла 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);

}

}

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() чтобы получить простой 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);
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]