PHPExcel - load only filtered data

1.4k Views Asked by At

i have file like this

I want to load only two visible row in this example. I do not know how I can do it.

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

When loading the file in PHPExcel shows all 8769 rows.

I have to do it in such a way as filtered data will always be different.

Do you know any way to do this?

2

There are 2 best solutions below

0
On

Thanks a lot!

Working great as soon swapped "getIndex ()" to "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());
   }
}
0
On

If you only want visible rows, then you need to write a bit of code that will loop over the rows selecting only those that are visible

Something like:

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