2016-07-13 2 views
0

Я хочу загрузить файл file.xls и проверить, содержит ли мои элементы символ ^; то, я хочу удалить его.Удалить строку phpexcel

Вот мой код до сих пор:

$objPHPExcel = PHPExcel_IOFactory::load("trainbayes.xlsx"); 
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet){ 
$column = 'C'; 
$lastRow = $worksheet->getHighestRow(); 
    for ($row = 2; $row <= $lastRow; $row++) {  
     $cell = $worksheet->getCell($column.$row); 
     if (preg_match("/([\^])/",$cell)){ 
      $objPHPExcel->getActiveSheet()->removeRow($row,$row); 
     } 
    } 
} 

Но это не сработало. Вы можете мне помочь? Спасибо :)

+0

вы уверены, что вы передаете правильные параметры 'removeRow()'? – revo

+0

@revo не уверен в этом :( – jill182

+0

Попробуйте изменить '$ cell = $ workheet-> getCell ($ column. $ Row);' to '$ cell = $ workheet-> getCell ($ column. $ Row) -> GetValue(); ' – revo

ответ

2
$cell = $worksheet->getCell($column.$row); 

Возвращает Cell объект и присваивает его $cell; вы затем обрабатываете этот объект ячейки, как если бы это была строка в вашем вызове preg_match().

Конечно, вы должны быть проверяя значение клетки

$cell = $worksheet->getCell($column.$row)->getValue(); 

Кроме того,

$objPHPExcel->getActiveSheet()->removeRow($row,$row); 

ли вы на самом деле значит пройти $row дважды? Второй аргумент число строк удаляемых, первый аргумент номер строки, чтобы начать удаление, так что если вы передаете $row является 5, то PHPExcel удалит 5 строк, начиная со строки числа 5.

, конечно, вы имеете в виду

$objPHPExcel->getActiveSheet()->removeRow($row, 1); 

или просто

$objPHPExcel->getActiveSheet()->removeRow($row); 
0

Если вы ищете только строку ^, тогда используйте strpos. strpos будет быстрее, чем regex

if (strpos($str, '^')) { 

    $objPHPExcel->getActiveSheet()->removeRow($row,$row); 
} 
Смежные вопросы