1、有时候一张表格里会要有多个sheet空间,不同的sheet的空间查的表数据可能会不同
2、基于上传文件写的
贴一下简单的demo ,你们也可以直接在封装一下
/** * 导出 * @param $data * @return \Illuminate\Http\JsonResponse */ public static function exportList($list,$field) { if ($list) { $path = Excel::export_more_sheet($list, [ 'title' => $field, "regular" => [ "car_nature" => function ($v) { return self::CAR_NATURE[$v]; } ] ]); $res['media_id'] = base64_encode($path); } return response_json($res); }
public static function export_more_sheet($data, $map, $file = null, $workSheetName = "WorkSheet", $one_line=[]) { if (empty($file)) $file = timesrim(); $file_path = storage_path("excel") . '/' . $file . ".xlsx"; if (!isset($map['title'])) { if (count($data) > 0 && isset($data[0])) { $map['title'] = array_combine(array_keys($data[0]), array_keys($data[0])); } else { $map['title'] = array(); } } $header = array(); $header1 = array(); foreach ($map['title']['0'] as $key => $val) { if (isset($map['simpleFormat'][$key])) { $header[$val] = $map['simpleFormat'][$key]; } else { $header[$val] = 'GENERAL'; } } foreach ($map['title']['1'] as $key => $val) { if (isset($map['simpleFormat'][$key])) { $header1[$val] = $map['simpleFormat'][$key]; } else { $header1[$val] = 'GENERAL'; } } $writer = new XLSXWriter(); $writer->writeSheetHeader('预定名单', $header); $writer->writeSheetHeader('推广名单', $header1); foreach ($data[0] as $row) { $temp = array(); foreach ($map['title'][0] as $key => $value) { if (isset($row[$key])) { if (isset($map['regular']) && isset($map['regular'][$key]) && is_callable($map['regular'][$key])) { $row[$key] = call_user_func($map['regular'][$key], $row[$key]); if( isset($one_line[$key]) ){ if( $one_line[$key]==false ) $one_line[$key]=true; else $row[$key] = ''; } } $temp[] = $row[$key]; } else { $temp[] = ''; } } $writer->writeSheetRow('预定名单', $temp); } foreach ($data[1] as $row) { $temp = array(); foreach ($map['title'][1] as $key => $value) { if (isset($row[$key])) { if (isset($map['regular']) && isset($map['regular'][$key]) && is_callable($map['regular'][$key])) { $row[$key] = call_user_func($map['regular'][$key], $row[$key]); if( isset($one_line[$key]) ){ if( $one_line[$key]==false ) $one_line[$key]=true; else $row[$key] = ''; } } $temp[] = $row[$key]; } else { $temp[] = ''; } } $writer->writeSheetRow('推广名单', $temp); } $writer->writeToFile($file_path); return $file_path; }