/** * @param WorkbookInterface $workbook * * @return \PHPExcel */ protected function convertToDriver(WorkbookInterface $workbook) { $styleWriter = new StyleWriter(); /* * FIND DRIVER */ $driver = $workbook->getDriver(); /* * WORKBOOK STYLES */ if ($workbook->hasStyles()) { $styles = $styleWriter->convert($workbook->getStyles()); $driver->getDefaultStyle()->applyFromArray($styles); } /* * WORKBOOK SHEETS */ foreach ($workbook->getSheets() as $sheet) { $driverWorksheet = $sheet->getDriver(); /* * WORKSHEET STYLES */ if ($sheet->hasStyles()) { $styles = $styleWriter->convert($sheet->getStyles()); $driverWorksheet->getDefaultStyle()->applyFromArray($styles); } /* * CELLS */ $cellWriter = new CellWriter($driverWorksheet); // Add sheet to workbook $driver->addSheet($driverWorksheet); // Add cells foreach ($sheet->getCells() as $cell) { $cellWriter->write($cell); } // Merge given cells foreach ($sheet->getMergeCells() as $range) { $driverWorksheet->mergeCells($range); } } // Rewind $driver->setActiveSheetIndex(0); return $driver; }
/** * Convert cells to array * @param Workbook $workbook * * @return array */ protected function convertCellsToArray(Workbook $workbook) { $source = []; $r = 0; $row = 1; foreach ($workbook->getSheets() as $sheet) { foreach ($sheet->getCells() as $cell) { // Go to next row when needed if ($cell->getCoordinate()->getRow() != $row) { $r++; } // Set value $source[$r][] = $cell->getValue(); // Save last row $row = $cell->getCoordinate()->getRow(); } } return $source; }