有时候需要把excel的数据导入php中,可能是json或者是php变量使用。
PhpOffice的版本已经跟新了不少,整理一下新版可用的方法。
前面需要composer导入库
composer require phpoffice/phpspreadsheet
这里直接贴代码
use PhpOffice\PhpSpreadsheet\IOFactory; class Excel{ public function main($file){ return $this->getExcel($file); } /** * @param string $file excel文件名 * @param int $header 头部字段名位置 * @return array * @throws \PhpOffice\PhpSpreadsheet\Reader\Exception * @author An Yang * @time 2021/3/4 10:19 */ protected function getExcel(string $file, int $header = 2) { //默认参数行数从0开始计算; $header -= 1; $objReader = IOFactory::createReader('Xlsx'); // 有Xls和Xlsx格式两种 $objPHPExcel = $objReader->load($file); //$file 可以是上传的表格,或者是指定的表格 // $cells 是包含 Excel 表格数据的数组 $cells = []; foreach ($objPHPExcel->getWorksheetIterator() as $sheelId => $cell) { //$cells[] = $cell->toArray(); $cellName = []; foreach ($cell->toArray() as $key => $val) { //排除标题上面的列 if ($key < $header) { continue; } //获取表列字段名 if ($key == $header) { $cellName = $val; continue; } //字段赋值 $item = []; foreach ($val as $key2 => $val2) { $name = $cellName[$key2] ?? ""; if (empty($name)) { continue; } $cells[$sheelId][$key][$name] = $val2; } } } return $cells; } }
需要使用的excel表大概格式为如下
姓名 | 上午 | 下午 |
name | am | pm |
张三 | 上班 | 上班 |
李四 | 迟到 | 上班 |
王五 | 上班 | 早退 |