objReader = IOFactory::createReader($inputFileType); } /*return [ 'sheet_index' => [ 'row_id' => [ //column name => content 'A' => '', 'B' => '', ], ], //... ];*/ public function read( $excel_file, $sheet_start_row = 2, array $column_list = ['A', 'B'], $callback_on_each_row = '', $return_content = false ) { //$objReader->setReadDataOnly(true); $objPHPExcel = $this->objReader->load($excel_file); $apply_callback_on_rows = ($callback_on_each_row && function_exists($callback_on_each_row)); $number_sheet = $objPHPExcel->getSheetCount(); $all_sheet = []; $map_column_list = (sizeof($column_list)) ? $column_list : self::$default_cols; for($i=0; $i < $number_sheet; $i++){ $objPHPExcel->setActiveSheetIndex($i); $current_sheet = $objPHPExcel->getActiveSheet(); $number_row = $current_sheet->getHighestRow(); $all_sheet_rows = []; for($j = $sheet_start_row; $j <= $number_row; $j++){ $rows_content = []; foreach ($map_column_list as $col) { //$cell_value = $current_sheet->getCell($col . $j)->getFormattedValue(); $cell_value = $current_sheet->getCell($col . $j)->getValue(); $rows_content[$col] = ($cell_value) ? trim($cell_value) : ''; } //check if we want to return data if($return_content) $all_sheet_rows[$j] = $rows_content; //check if we want to apply callback right away if($apply_callback_on_rows) { call_user_func($callback_on_each_row, $rows_content); } } if($return_content) $all_sheet[$i] = $all_sheet_rows; } //free resource $objPHPExcel = null; return ($return_content) ? $all_sheet : true; } }