关于表格创建多个sheet空间

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值