thinkPHP怎样使用PHPExcel导出网站数据为excel

 我来答
se...4@33sn.cc
2017-05-11 · 超过49用户采纳过TA的回答
知道答主
回答量:100
采纳率:0%
帮助的人:26.9万
展开全部

第一步:先去下载PHPExcel插件压缩包,解压后只用到Classes文件夹里面的文件就行。
第二步:然后把Classes文件夹名称改为PHPExcel (也可以不用改),再放在thinkPHP指定的第三方类库目录文件夹Vendor下面,第三方类库目录在ThinkPHP/Library 里面


第三步:整理数据,整理成适合excel表格式的数据,不多说直接给代码

public function export(){//导出Excel表数据整理
$xlsData  = M('table')->select();//查找需要导出的数据
        $xlsCell  = array(//设置excel文档的格式第一行就相当于标题
            array('id','ID号'),
            array('title','标题'),
            array('time','时间'),
            array('content','内容')
        );

$newArray = array();//自定义数组
        foreach ($xlsData as $k => $v)
        {//然后把所有查找到的数据根据设置第一行的标题相对应放进数组里面
$newArray[$k]['id'] = $v['id'];
                $newArray[$k]['title'] = $v['title'];
                $newArray[$k]['time'] = date('Y-m-d',$v['time']);
$newArray[$k]['content'] = $v['content'];
        }
        $xlsName = 'Excel表数据';//设置Excel表文件名称
        $this->exportExcel($xlsName,$xlsCell,$newArray);//调用PHPExcel插件,这步的函数也需要自定义
    }

/**
     * @param $xlsName 名称
     * @param $xlsCell 参数(标题数组)
     * @param $newArray 内容(数据数组)
     */
    public function exportExcel($xlsName,$xlsCell,$newArray){

        $xlsTitle = iconv('utf-8', 'gb2312', $xlsName);//文件名称需要转码避免乱码出错
        $xlsCell_num = count($xlsCell);
        $newArray_num = count($newArray);
        
        vendor("PHPExcel.PHPExcel");//关键,利用thinkphp内置函数嵌套PHPExcel插件,如果在第二步没有改文件夹名称就这样:vendor("Classes.PHPExcel");点之前表示插件文件夹,点之后的表示PHPExcel.php文件的名称不要后缀名
        $objPHPExcel = new \PHPExcel();//实例化PHPExcel
        
        $column_key = 'A';//excel表的每个单元格都是A1,A2,A3....类似的,大写字母代表列,数字代表行,那么第一行就是标题了
foreach($xlsCell as $k=>$v){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($column.'1',$v);//有多少标题列先写进第一行
$column_key++;//这样循环的好处就是不用限定有多少列,可以根据你的数据表字段有多少就导出多少列
}
        for($i=0;$i<$newArray_num;$i++){//第一层循环表示多少行
            $column_key = 'A';
            for($j=0;$j<$xlsCell_num;$j++){//第二层表示列
                $objPHPExcel->getActiveSheet(0)->setCellValue($column_key.($i+2), $newArray[$i][$xlsCell[$j][0]]);//($i+2)表示从第二行开始,第一行已经设置为标题了
                $column_key++;
            }
        }
        header('pragma:public');
        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
        header("Content-Disposition:attachment;filename=$xlsTitle.xls");//attachment新窗口打印inline本窗口打印
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');//Excel5为xls格式,excel2007为xlsx格式
        $objWriter->save('php://output');
        exit;
    }

 运行后的效果文件图

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式