ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TP5 导出数据到Excel

2022-03-07 16:03:38  阅读:163  来源: 互联网

标签:info index Excel key excel 导出 header TP5 设置


public function outputToExcelDemo(){
        $header = [];
        $style = [];
        $info = [];

        //1.获取数据
        $outface = new Outface();
        $resIntaerfaceData = $outface->getAllData('http://www.tp5.com/index.php/admin/index/index/table/comm_account');  //获取当前页面的所有数据

        //2.提取表头数据
        foreach ( $resIntaerfaceData['item'][0] as $key=>$value){
            array_push($header,$key);
        }

        //3.提取主要数据
        $data = $resIntaerfaceData['item'];

        //4.提取文件信息
        $info['name'] =  $resIntaerfaceData['table'];

        //5.调用处理函数
        $objExcelAbout = new ExcelAbout();
        $objExcelAbout->outputToExcel($data, $header, $style, $info);
    }

 

 /*
     * 数据库数据导出为excel文件
     * $data: 二维数组 , 主要数据内容
     * $header:一维数组, 表头数据
     * $style:一维数组,  表格样式
     * $info: 一维数组, 文件信息
     * */
    public function outputToExcel($data, $header, $style, $info)
    {

        /*
         * 数据重组(excel格式)
         */

        $cellHeader = [];  //表头重组后的数据
        $coderArr = array(
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
            'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
        );
        //表头重组
        for ($i = 0, $n = count($header); $i < $n; $i++) {
            if ($i < 26) {
                $cellHeader[$coderArr[$i]] = $header[$i];
            } else {
                $key = $coderArr[(int)($i / 26) - 1] . $coderArr[(int)($i % 26)];
                $cellHeader[$key] = $header[$i];
            }
        }

        //数据重组
        $cellData = [];
        for ($j = 0, $m = count($data); $j < $m; $j++) {
            $cellDataItem = [];
            foreach ($cellHeader as $key => $value) {
                $cellDataItem[$key] = $data[$j][$value];
            }
            array_push($cellData, $cellDataItem);
        }

        $this->excel = new \PHPExcel();   //PHPExcel实例化对象
        /**
         * 设置文件的一些属性,在xls文件——>属性——>详细信息里可以看到这些值,xml表格里是没有这些值的, 可以不要
         **/

        $this->excel->getProperties()//获得文件属性对象,给下文提供设置资源
        ->setCreator("jiekeliu")//设置文件的创建者
        ->setLastModifiedBy("jiekeliu")//设置最后修改者
        ->setTitle("接口数据转存Excel")//设置标题
        ->setSubject("数据转存")//设置主题
        ->setDescription("coder by jiekeliu")//设置备注
        ->setKeywords("office 2007 openxmlphp")//设置标记
        ->setCategory("test");                //设置类别
        /**
         * 设置表格的内容
         **/
        //设置表头
        foreach ($cellHeader as $k => $v) {
            $index = (string)($k . '3');
            $this->excel->setActiveSheetIndex(0)->setCellValue($index, $v);

            $this->excel->getActiveSheet()
                ->getStyle($index)
                ->getFont()
                ->setName('宋体')//样式:宋体
                ->setSize(20)//大小:20
                ->setBold(true);   //加粗:是

            $this->excel->getActiveSheet()
                ->getStyle($index)
                ->getAlignment()
                ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //水平方向上对齐

            $this->excel->getActiveSheet()
                ->getColumnDimension($k)
                ->setAutoSize(true); //内容自适应
        }

        //设置主体数据

        for ($i = 0, $n = count($cellData); $i < $n; $i++) {
            foreach ($cellData[$i] as $k => $v) {
                $m = (string)($i + 4);
                $index = (string)($k . $m);
                $this->excel->setActiveSheetIndex(0)->setCellValue($index, $v);

                $this->excel->getActiveSheet()
                    ->getStyle($index)
                    ->getAlignment()
                    ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //水平方向上对齐

            }
        }

        $this->excel->getActiveSheet()//获取正在的活动表
        ->setTitle($info['name']);  //设置表名称


        Header("Content-type: application/octet-stream");
        Header("Accept-Ranges: bytes");
        Header("Content-type:application/vnd.ms-excel");
        Header("Content-Disposition:attachment;filename=" . $info['name'] . ".xlsx ");
        $objWriter = new PHPExcel_Writer_Excel2007($this->excel); //保存为2007版的excel文件
        $objWriter->save('php://output');
        exit;
    }

}

 

标签:info,index,Excel,key,excel,导出,header,TP5,设置
来源: https://www.cnblogs.com/catyxiao/p/15976302.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有