2015-06-12 46 views
0

我有文件像thisPHPExcel - 只加載過濾的數據

我想在本例中只加載兩個可見行。 我不知道我該怎麼做。

$reader = new PHPExcel_Reader_Excel2007(); 
$excel = $reader->load($_FILES['plik']['tmp_name']); 
$data = $excel->getActiveSheet()->toArray(null, true,true,true); 

當在PHPExcel中加載文件時顯示所有8769行。

我必須這樣做,因爲過濾的數據總是不同的。

你知道有什麼辦法可以做到嗎?

+0

你們是不是要選擇從工作表中兩個隨機行? –

+0

不,我嘗試從工作表中僅選擇過濾(可見)行。 –

+0

然後循環遍歷工作表,每次一行,並檢查該行的可見性。 –

回答

1

如果只想可見行,那麼你需要編寫一些代碼,將遍歷所有的行只選擇那些可見

喜歡的東西:

$reader = new PHPExcel_Reader_Excel2007(); 
$excel = $reader->load($_FILES['plik']['tmp_name']); 
$highestColumn = $excel->getActiveSheet()->getHighestColumn(); 
$data = []; 
foreach ($excel->getActiveSheet()->getRowIterator() as $row) { 
    if ($excel->getActiveSheet()->getRowDimension($row->getIndex())->getVisible()) { 
     $data[] = $excel->getActiveSheet() 
      ->rangeToArray('A' .$row->getIndex().':'.$highestColumn.$row->getIndex()); 
    } 
} 
1

非常感謝!

偉大的工作,儘快交換「getIndex()」到「getRowIndex()」

$reader = new PHPExcel_Reader_Excel2007(); 
$excel = $reader->load($_FILES['plik']['tmp_name']); 
$data = []; 
foreach ($excel->getActiveSheet()->getRowIterator() as $row) { 
if ($excel->getActiveSheet()->getRowDimension($row->getRowIndex())->getVisible()) { 
    $data[] = $excel->getActiveSheet()->rangeToArray('A' .$row->getRowIndex().':'.'BB'.$row->getRowIndex()); 
    } 
}