php 导出 excel 导出多个sheet

由来:公司是考务公司,做考试系统的,考试就会有考场(例:第二考场),考点(例:西北工业大学考点),签到表张贴表
我要做的就是让运营方面更加轻松,那么比如运营要导出每个考点下面考场的签到表和张贴表,正常来说一个考场有签到、张贴表
一个个导出的话,如果考试人数很多,一个个导出再打印会很麻烦,效率特别低,所以我写了一个程序,导出的签到表,张贴表可以按照考点导出一个excel,这个excel内是多个sheet,一个考场一个sheet,并且每个sheet都是有格式的(背景颜色,大小,合并,居中等),可以直接打印多个sheet,极大降低了人力成本,下面是我做的导出多个sheet步骤

导出多个sheet,在网上查看了一些代码,很少有人讲述具体的,或者说跟我们业务逻辑有关吧,所以我自己总结了一下,贴代码:
 

 

    /**
     * @param $cands                    每个考场考生数据
     * @param $site_name                考点名称
     * @param $other_data               考场数据
     * @param string $sheet_page        第几个考场的sheet数量
     * @param string $room_num          总考场数量
     * @param string $excel             考点下考场的总数
     * @return PHPExcel|string|void
     * 作用: 该方法是导出考点下面多个考场的excel,就是导出一个excel,里面有多个sheet,每个sheet都是一个考场,有自己的格式样式
     * 思路:先对一个考点一个考场还是多个考场进行判断,若是一个考场,则不用返回 phpexcel对象,若是多个则需要返回
     * 因为导出多个sheet phpexcel只能new一次,若多次会报错,所以多个考场的话在第一个考场写入数据同时,返回一个
     * phpexcel对象,第二个考场发送的时候,会带上上一次返回的对象,从而形成专属于机考云导出考点多个sheet,慎改
     */
    public function table_export($cands, $site_name, $other_data, $sheet_page='', $room_num='', $excel='')
    {
        if( !empty($cands && $site_name && $other_data) ) {
            //创建对象
            if ($sheet_page == 0) {
                $excel = new PHPExcel();
                $first_sheet_title = $other_data['room_name'].'签到表';
                $this->sheet_more_sign($cands, $other_data, $excel);
                $excel->setActiveSheetIndex(0);
                $excel->getActiveSheet()->setTitle($first_sheet_title);
            }

            if ($sheet_page > 0) {
                $first_sheet_title = $other_data['room_name'].'签到表';
                $excel->createSheet();
                $excel->setActiveSheetIndex($sheet_page);
                $this->sheet_more_sign($cands, $other_data, $excel);
                $excel->getActiveSheet()->setTitle($first_sheet_title);
            }

            if ($sheet_page == 0 && $sheet_page+1 != $room_num) {
                return $excel;
            }

            if ($sheet_page+1 == $room_num) {
                $write = PHPExcel
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值