2016-07-13 6 views
0

Ich möchte meine Datei.xls laden und prüfen, ob meine Elemente das Zeichen ^ enthält; dann möchte ich es entfernen.Zeile löschen phpexcel

Hier mein Code so weit:

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

Aber es hat nicht funktioniert. Kannst du mir helfen? Danke :)

+0

sind Sie sicher, dass Sie die richtigen Parameter zu 'removeRow()' sind vorbei? – revo

+0

@revo nicht sicher über das :( – jill182

+0

Versuchen Sie und ändern Sie $ cell = $ Arbeitsblatt-> getCell ($ Spalte. $ Zeile); 'zu $ Zelle = $ Arbeitsblatt-> getCell ($ Spalte. $ Zeile) -> getValue(); ' – revo

Antwort

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

Gibt eine Zelle Objekt und weist sie $cell; Sie behandeln dann dieses Zellobjekt, als wäre es eine Zeichenfolge in Ihrem preg_match() Anruf.

Sicherlich sollten Sie die

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

Zusätzlich der Zelle Wert überprüft werden,

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

Meinen Sie wirklich $row zweimal passieren? Zweites Argument ist die Anzahl der Zeilen zu löschen, erste Argument ist die Zeilennummer Löschen zu beginnen, wenn Sie also passieren $row5 ist, dann wird PHPExcel 5 Zeilen löschen, bei Zeilennummer beginnend 5.

Sicher meinen Sie

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

oder einfach

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

Wenn Sie nur nach Zeichenkette ^ suchen, dann verwenden Sie strpos. strpos wird schneller sein als regex

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

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