1. テーブルに複数のシート スペースが存在する場合があり、異なるシート スペースでチェックされるテーブル データが異なる場合があります。
2.アップロードされたファイルに基づいて書かれています
簡単なデモを投稿してください。直接パッケージ化することもできます
/** * 輸出 * @param $データ * @return \Illuminate\Http\JsonResponse */ public static function exportList($list,$field) { もし ($リスト) { $path = Excel::export_more_sheet($list, [ 'タイトル' => $field, 「通常」 => [ "car_nature" => 関数 ($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") . '/' . $ファイル . ".xlsx"; if (!isset($map['title'])) { if (count($data) > 0 && isset($data[0])) { $map['title'] = array_combine(array_keys($data[0]), array_keys($data[0])); } それ以外 { $map['title'] = array(); } } $header = 配列(); $header1 = 配列(); foreach ($map['title']['0'] as $key => $val) { if (isset($map['simpleFormat'][$key])) { $header[$val] = $map['simpleFormat'][$key]; } それ以外 { $header[$val] = '一般'; } } foreach ($map['title']['1'] as $key => $val) { if (isset($map['simpleFormat'][$key])) { $header1[$val] = $map['simpleFormat'][$key]; } それ以外 { $header1[$val] = '一般'; } } $writer = 新しい XLSXWriter(); $writer->writeSheetHeader('予約済みリスト', $header); $writer->writeSheetHeader('プロモーション リスト', $header1); foreach ($data[0] as $row) { $temp = 配列(); 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; そうでなければ $行[$キー] = ''; } } $temp[] = $row[$key]; } それ以外 { $temp[] = ''; } } $writer->writeSheetRow('予約リスト', $temp); } foreach ($data[1] as $row) { $temp = 配列(); 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; そうでなければ $行[$キー] = ''; } } $temp[] = $row[$key]; } それ以外 { $temp[] = ''; } } $writer->writeSheetRow('プロモーション リスト', $temp); } $writer->writeToFile($file_path); $file_path を返します。 }