2016-07-20 13 views
0

Beim Lesen eines Blattes mit phpExcel mit der toArray-Methode werden auch verdeckte Zeilen analysiert.Versteckte Zeilen beim Lesen der Datei mit phpExcel entfernen?

Gibt es eine Methode, die ich vor toArray verwenden kann, um versteckte Zeilen zu entfernen?

-Code bisher mit Codeigniter

$this->load->library('excel'); 
$objPHPExcel = PHPExcel_IOFactory::load($upload_data['full_path']); 

foreach ($objPHPExcel->getAllSheets() as $sheet) { 
    $sheets[$sheet->getTitle()] = $sheet->toArray(); 
} 

$data = array(); 
foreach ($sheets['Data'] as $key => $row) { 
    if ($key > 0) { 
     $item = array(); 
     $item['name'] = $row[1]; 
     $item['code'] = $row[2]; 
     $data[] = $item; 
    } 
} 

Antwort

2

Wenn das Blatt Array Umwandlung PHPExcel_Worksheet::toArray Verwendung finden Sie alle Zeilen erhalten, unabhängig davon, ob sie sichtbar sind oder nicht.

Wenn Sie nur die sichtbaren Zeilen filtern möchten, müssen Sie über die Zeilen iterieren und nach jedem von ihnen suchen, wenn sie sichtbar sind oder nicht. Sie können die Sichtbarkeit einer Zeile überprüfen mit

$sheet->getRowDimension($row_id)->getVisible() 

$row_id beginnt mit 1 (und nicht 0), gleiche in Excel ist

Hier ist ein Beispiel dafür, wie es in Ihrem Code zu verwenden . Ich änderte ein wenig die Art, wie Sie das Datenblatt erhalten, da Sie nicht über die Blätter iterieren müssen, können Sie nur dieses bestimmte Blatt mit der Funktion getSheetByName abrufen.

$data_sheet = $objPHPExcel->getSheetByName('Data'); 
$data_array = $data_sheet->toArray(); 
$data = []; 

foreach ($data_sheet->getRowIterator() as $row_id => $row) { 
    if ($data_sheet->getRowDimension($row_id)->getVisible()) { 
     // I guess you don't need the Headers row, note that now it's row number 1 
     if ($row_id > 1) { 
      $item = array(); 
      $item['name'] = $data_array[$row_id-1][1]; 
      $item['code'] = $data_array[$row_id-1][2]; 
      $data[] = $item; 
     } 
    } 
}