您的当前位置:首页>全部文章>文章详情

php导出数据xlsx

发表于:2024-07-24 16:43:54浏览:124次TAG: #PHP #导出

引言

php导出数据,文件名后缀为.xlsx

方法

if (!function_exists('export_excel')) {
    /**
     * 创建(导出)Excel数据表格
     * @param  array   $list        要导出的数组格式的数据
     * @param  string  $filename    导出的Excel表格数据表的文件名
     * @param  array   $keyTitle    $list数组中与Excel表格表头$header中每个项目对应的字段的名字(key值)
     * @param  array   $startRow    第一条数据在Excel表格中起始行
     * @param  [bool]  $excel2007   是否生成Excel2007(.xlsx)以上兼容的数据表
     * 比如: $keyTitle与$list数组对应关系如下:
     *     $keyTitle = array('id'=>'编号','username'=>'用户名','sex'=>'性别','age'=>'年龄');
     *     $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24));
     */
    function export_excel($list,$keyTitle,$filename='',$startRow=1,$excel2007=false){
        //文件引入
        require_once EXTEND_PATH.'/PHPExcelTool/Tool/PHPExcel.php';
        require_once EXTEND_PATH.'/PHPExcelTool/Tool/PHPExcel/Writer/Excel2007.php';

        if(!is_array($keyTitle)) return false;
        $header_arr = 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','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ','BA','BB','BC','BD','BE','BF','BG','BH','BI','BJ','BK','BL','BM','BN','BO','BP','BQ','BR','BS','BT','BU','BV','BW','BX','BY','BZ');
        //初始化PHPExcel()
        $objPHPExcel = new \PHPExcel();

        //设置保存版本格式
        if($excel2007){
            $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
            if(empty($filename)) $filename = time().'.xlsx';
        }else{
            $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
            if(empty($filename)) $filename = time().'.xls';
        }

        //接下来就是写数据到表格里面去
        $objActSheet = $objPHPExcel->getActiveSheet();
        // 标题
        $indexValue = array_values($keyTitle);
        foreach ($indexValue as $key => $value){
            //这里是设置单元格的内容
            $objActSheet->setCellValue($header_arr[$key].$startRow,$indexValue[$key]);
        }
        $startRow++;
        // 字段
        $indexKey = array_keys($keyTitle);

        foreach ($list as $row) {
            foreach ($indexKey as $key => $value){
                //这里是设置单元格的内容
                $objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]?:'-');
            }
            $startRow++;
        }
        // 下载这个表格,在浏览器输出
        if (strpos($filename,'/') === false) {
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
            header("Content-Type:application/force-download");
            header("Content-Type:application/vnd.ms-execl");
            header("Content-Type:application/octet-stream");
            header("Content-Type:application/download");;
            header('Content-Disposition:attachment;filename='.$filename.'');
            header("Content-Transfer-Encoding:binary");
            $objWriter->save('php://output');
        }
        else {
            $objWriter->save($filename);
        }
    }
}