导出至excel表格

function getExcel($fileName, $headArr, $data, $msg = '')
{
    //对数据进行检验
    if (empty($data) || !is_array($data)) {
        die("data must be a array");
    }

    //检查文件名
    if (empty($fileName)) {
        die("filename must be existed");
    }

    //获取总列数
    $totalColumn = count($headArr);
    if ($totalColumn > 78) {
        $charColumn = 'C' . chr($totalColumn - 78 + 64);
    } elseif ($totalColumn > 52) {
        $charColumn = 'B' . chr($totalColumn - 52 + 64);
    } elseif ($totalColumn > 26) {
        $charColumn = 'A' . chr($totalColumn - 26 + 64);
    } else {
        $charColumn = chr($totalColumn + 64);
    }

    // $charColumn = strtoupper(num2alpha($totalColumn));
    $date = date("Y-m-d", time());
    $fileName .= "_{$date}.xls";

    //创建PHPExcel对象
    $objPHPExcel = new \PHPExcel();

    $objPHPExcel->setActiveSheetIndex(0);    //设置当前的sheet  操作第一个工作表
    $objActSheet = $objPHPExcel->getActiveSheet();    //添加数据


    //设置表头
    $key = ord("A");
    $key2 = ord("@"); //@--64
    // $key = foo('a');
    foreach ($headArr as $v) {
        if ($key > ord("Z")) {
            $key2 += 1;
            $key = ord("A");
            $colum = chr($key2) . chr($key); //超过26个字母时才会启用
        } else {
            if ($key2 >= ord("A")) {
                $colum = chr($key2) . chr($key); //超过26个字母时才会启用
            } else {
                $colum = chr($key);
            }
        }
        // $colum = chr($key);
        $objActSheet->setCellValue($colum . '1', $v);
        $objActSheet->getColumnDimension($colum)->setWidth(20);
        $key++;
    }

    //写入数据
    if (!empty($msg)) {
        $column = 3;
    } else {
        $column = 2;
    }
    foreach ($data as $key => $rows) {     //行写入
        $span = ord("A");
        $span2 = ord("@"); //@--64
        foreach ($rows as $keyName => $value) {    // 列写入
            $judge = stristr($keyName, 'img');

            if ($span > ord("Z")) {
                $span2 += 1;
                $span = ord("A");
                $j = chr($span2) . chr($span); //超过26个字母时才会启用
//                dump($j);die;
            } else {
                if ($span2 >= ord("A")) {
                    $j = chr($span2) . chr($span); //超过26个字母时才会启用
                } else {
                    $j = chr($span);
                }
            }
            if ($judge === false) {
                $objActSheet->setCellValue($j . $column, $value);
            } else {
                $objActSheet->getRowDimension($column)->setRowHeight(60);    //设置行高

                if (is_array($value)) {
                    $count = count($value);
                    foreach ($value as $k => $v) {
                        if (is_file($v)) {
                            $m = $k + 1;
                            $objDrawing = new \PHPExcel_Worksheet_Drawing();
                            //图片路径,项目目录下就行
                            $objDrawing->setPath($v);
                            $objDrawing->setCoordinates($j . $column);
                            $objDrawing->setWidth(50);
                            $objDrawing->setHeight(50);
                            //图片偏移距离
                            $objDrawing->setOffsetX($m * 10 + $k * 50);
                            $objDrawing->setOffsetY(10);
                            $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
                        }
                        //设置列宽
                    }
                    $objPHPExcel->getActiveSheet(0)->getColumnDimension($j)->setWidth(60);
                } else {
                    if (is_file($value)) {
                        $objDrawing = new \PHPExcel_Worksheet_Drawing();
                        $objDrawing->setPath($value);
                        $objDrawing->setWidth(50);
                        $objDrawing->setHeight(50);
                        $objDrawing->setOffsetX(10);
                        $objDrawing->setOffsetY(10);
                        $objDrawing->setCoordinates($j . $column);
                        $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
                    } else {
                        $objActSheet->setCellValue($j . $column, $value);
                    }
                }
            }
            $span++;
        }
        $column++;
    }
    $phpstyle = new \PHPExcel_Style_Color();

    //表头变颜色
    $objActSheet->getStyle('A1:' . $charColumn . '1')->getFont()->getColor()->setARGB($phpstyle::COLOR_BLUE);    //设置颜色
    //设置批注
    if (!empty($msg)) {
        $objActSheet->getStyle('A2')->getFont()->getColor()->setARGB($phpstyle::COLOR_RED);
        $objActSheet->setCellValue('A2', $msg);    //给单个单元格设置内容
        $objActSheet->mergeCells('A2:' . $charColumn . '2');    //合并单元格
    }
    //处理中文输出问题
    $fileName = iconv("utf-8", "gb2312", $fileName);

    //接下来当然是下载这个表格了,在浏览器输出就好了
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header("Content-Disposition: attachment;filename=\"$fileName\"");
    header('Cache-Control: max-age=0');

    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save('php://output'); //文件通过浏览器下载


}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值