2016-07-13 4 views
0

私の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); 
     } 
    } 
} 

しかし、それは動作しませんでした。手伝って頂けますか?ありがとうございました:)

+0

あなたは 'removeRow()'に右のパラメータを渡していますか? – revo

+0

@revoそれについてはわからない:( – jill182

+0

'$ cell = $ worksheet-> getCell($ column。$ row);を' $ cell = $ worksheet-> getCell($ column。$ row) getValue(); ' – revo

答えて

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

は、Cell オブジェクト返し、$cellに代入されます。そのセルオブジェクトをあなたのpreg_match()コールの文字列のように扱います。

きっとあなたはさらに、

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

あなたが本当に二回$rowを渡すために意味するか、セルの

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

をチェックすべきですか?第2引数は、削除する行数で、最初の引数は削除を開始する行番号があるので、あなたは$row5で渡した場合、その後、PHPExcelは、きっとあなたが

を意味し、行番号5

から始まり、5行を削除します

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

または単に

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

文字列^のみを検索する場合は、strposを使用してください。 strposは速くよりregex

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

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