2016-07-20 27 views
0

使用toArray方法讀取使用phpExcel的工作表時,也會分析隱藏行。使用phpExcel讀取文件時刪除隱藏行嗎?

有沒有一種方法可以在toArray之前使用來刪除隱藏的行?

到目前爲止的代碼,用笨

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

回答

2

當使用PHPExcel_Worksheet::toArray你會得到所有行,而不管它們是否可見或不可見片轉換爲數組。

如果您只想過濾可見的行,您必須遍歷行並檢查它們是否可見。您可以使用帶有1(而不是0)

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

$row_id開始檢查行的知名度,同樣是在Excel

下面是如何在你的代碼中使用它的一個示例。我改變了一下你得到Data工作表的方式,因爲你不需要迭代工作表,你可以使用getSheetByName函數來獲取特定工作表。

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