删除行phpexcel

时间:2016-07-13 01:46:44

标签: php regex phpexcel

我想加载我的file.xls并检查我的元素是否包含字符^;然后,我想删除它。

到目前为止我的代码:

$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);
      }
   }
} 

但它没有用。你能帮助我吗?谢谢:))

2 个答案:

答案 0 :(得分:2)

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

返回一个Cell 对象并将其分配给$cell;然后,您将该单元格对象视为preg_match()调用中的字符串。

当然,您应该检查单元格的

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

此外,

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

你真的想要两次通过$row吗?第二个参数是要删除的行数,第一个参数是要开始删除的行号,因此如果传递$row5,则PHPExcel将从第5行开始删除5行。 / p>

当然你的意思是

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

或只是

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

答案 1 :(得分:0)

如果您只搜索字符串^,请使用strposstrpos将比regex

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

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