phpexcelphpexcelphpspreadsheetphpoffice

How get grouping rows in PHP from EXCEL?


How get grouping rows in PHP from EXCEL?

enter image description here

This code does not issue a groups:

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
$reader->setReadDataOnly(TRUE);
$spreadsheet = $reader->load("bulat_price.xlsx");
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->toArray();

Solution

  • $spreadsheet = PHPExcel_IOFactory::load($file); // load file
    $objWorksheet = $spreadsheet->getActiveSheet();
    $worksheet = $spreadsheet->setActiveSheetIndex(0); // select firts sheet
    
    $i = 0;
    $arrLevel = [];
    
    foreach ($worksheet->getRowDimensions() as $rowDimension) {
        $i++;
        $arrLevel[$i]['level'] = $rowDimension->getOutlineLevel(); // get level
    }
    $highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
    
    foreach ($objWorksheet->getRowIterator() as $row) {    
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(true);
    
        foreach ($cellIterator as $cell) {
            $arrLevel[$row->getRowIndex()]["excel"][$cell->getColumn()] = $cell->getValue(); // merge level and value
        }
    }
    
    var_dump($arrLevel);
    

    We get:

    enter image description here