其他分享
首页 > 其他分享> > TP5 导出数据到Excel

TP5 导出数据到Excel

作者:互联网

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