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;
}
本文介绍了一种使用PHP实现的多Sheet表格导出方法,通过Excel::export_more_sheet函数,可以根据不同的数据集创建多个工作表,并支持自定义表头格式及数据处理函数。
9363

被折叠的 条评论
为什么被折叠?



