Don't forget that you have had a dream

    

ThinkPHP5+PHPExcel导入导出

前言

不得不说,phpExcel是个很好的工具类,之前在typo3项目中一直在用,这两天找下资料,发现在tp5中使用起来更加的简单,奉上安装代码和使用代码

安装

在linux中,进入项目目录,不是根目录(public

# 进入项目目录
cd /var/www/html/fuhuaqi/

# 安装PHPExcel
composer require phpoffice/phpexcel
cd ./vendor/
ls -l 

执行完上述代码后,若在 vendor 存在 phpoffice 目录,则安装成功,可以使用了

代码

导入

下面代码可以直接放在 application 目录下的 common.php 中,以便全局调用

if (!function_exists('excel_export')) {
    /**
     * excel表格导出
     * @param string $fileName 文件名称
     * @param array $headArr 表头名称
     * @param array $data 要导出的数据
     */
    function excel_export($fileName = '', $headArr = [], $data = []) {
        $fileName .= "_" . date("Ymd", \think\Request::instance()->time()) . ".xls";
        $objPHPExcel = new \PHPExcel();
        $objPHPExcel->getProperties();
        $key = ord("A"); // 设置表头
        foreach ($headArr as $v) {
            $colum = chr($key);
            //设置表头值
            $objPHPExcel->getActiveSheet()->setCellValue($colum.'1',$v);
            //设置表头字体样式
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFont()->setName('微软雅黑');
            //设置表头字体大小
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFont()->setSize(13);
            //设置表头字体是否加粗
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFont()->setBold(true);
            //设置表头文字水平居中
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            //设置文字上下居中
            $objPHPExcel->getActiveSheet()->getStyle($colum)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
            //设置单元格背景色
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFill()->getStartColor()->setARGB('FFFFFFFF');
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFill()->getStartColor()->setARGB('FF6DBA43');
            //设置字体颜色
            $objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFont()->getColor()->setARGB('FFFFFFFF');

            //设置列宽度
            $objPHPExcel->getActiveSheet()->getColumnDimension($colum)->setWidth(strlen($v)*3);
            $key += 1;
        }

        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();
        foreach ($data as $key => $rows) { // 行写入
            $span = ord("A");
            foreach ($rows as $keyName => $value) { // 列写入
                if (is_numeric($value)) $value = ' '.$value;
                $objActSheet->setCellValue(chr($span) . $column, $value);
                $span++;
            }
            $column++;
        }

        $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表
        $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename='$fileName'");
        header('Cache-Control: max-age=0');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output'); // 文件通过浏览器下载
        exit();
    }
}

控制器中使用

/**
 * tp5 使用excel导出
 * @param
 * @return mixed
 */
public function excel() {
    $name = '预约企业列表';
    $header=['企业名称','负责人', '电话','预约服务','需求','预约时间'];
    $datas=db('reservation')->alias('a')
        ->join('service s','s.id=a.service','LEFT')
        ->field('a.companyname,a.legalperson,a.legalphone,a.indorsation,s.title,a.create_time')
        ->order('a.create_time asc')
        ->select();
    excel_export($name,$header,$datas);
}

您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!
所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 知识共享许可协议 进行许可。

评论已关闭

  更新日志

博客banner下方滚动文字替换为使用 一言API 随机获取 --- updated on 2019-05-22 09:04:31 星期三

  关于博主

三里林,一个致力于分享,分享心得,分享技术,分享知识点的个人博客

  近期评论

  分类目录

只有坦然接受命运的不公,才能安然享受生命的平等。

我们嘴里的别人的事听起来就像是自己的事;我们说自己的事的时候,却又在像说一段不相干的故事

永远不要忘记,直至天主垂允为人类揭示未来图景的那一天来到之前,人类的全部智慧就包含在这五个字里面:等待和希望.

那么,问题来了…

会长和往常一样挺着小小的胸部一副自以为了不起的样子套用某本书的内容说道……

即使无法掌握未来,也请不要忘了明天。

失去人性,失去很多;失去兽性,失去一切。

智商是硬伤。