PHP导出excel

来源:互联网 发布:python 程序 编辑:程序博客网 时间:2024/05/01 14:13

开源的 PHPExcel  http://phpexcel.codeplex.com/ 目前最新版是1.7.6

PHPExcel 可以生成 .xls 和 .xlsx (office2007)。其封装的方法很全了。

比如设置 excel的title,keywords,description

获得某个sheet,某个列的数据 等等。

具体的文档,查看这里,http://phpexcel.codeplex.com/releases/view/45412 非常详细。

下面是一段简单的示例。

//这里要 include进来 phpexcel类include ROOT_PATH . 'library/PHPExcel-1.7.6/PHPExcel.PHP';include ROOT_PATH . 'library/PHPExcel-1.7.6/PHPExcel/Writer/Excel2007.PHP';class MyExcel {    public static function makeExcel($title, $data, $excle_name) {        $exclefile = 'excel/' . date('Y-m-d') . '/' . md5($excle_name) . '.xlsx';        $Excel = new PHPExcel();        $Excel->setActiveSheetIndex(0);        $Excel->getSheet()->setTitle($title);        $cell_one = $data[0];        $j = 0;        foreach ($cell_one as $k => $v) {            $Excel->getSheet()->setCellValue(self::getCharByNunber($j) . '1', $k);            $j++;        }        $x = 2;        foreach ($data as $value) {            $y = 0;            foreach ($value as $k => $v) {                $Excel->getSheet()->setCellValue(self::getCharByNunber($y) . $x, $v);                $y++;            }            $x++;        }        $objwriter = new PHPExcel_Writer_Excel2007($Excel);        $objwriter->save($exclefile);        TMDebugUtils::debugLog('make ' . $exclefile);        return $exclefile;    }    protected static function getCharByNunber($num) {        $num = intval($num);        $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',);        return $arr[$num];    }}//导出用户基本信息function exportUserBaseInfo() {    $excelTitle = '用户基本信息';    $excelFileName = 'userbase';    $data = array();    // $rs = ....  这里rs是从db读取的数据    for ($i = 0; $i < count($rs); $i++) {         $data[$i]['姓名'] = $rs[$i]->name;        $data[$i]['年龄'] = intval($rs[$i]->age);        $data[$i]['日期'] = $rs[$i]->date;    }    MyExcel::makeExcel($excelTitle, $data, $excelFileName);}//导出新闻资讯信息function exportUserBaseInfo() {    $excelTitle = '新闻资讯信息';    $excelFileName = 'news';    $data = array();    // $rs = ....  这里rs是从db读取的数据    for ($i = 0; $i < count($rs); $i++) {         $data[$i]['标题'] = $rs[$i]->title;        $data[$i]['作者'] = $rs[$i]->author;        $data[$i]['日期'] = $rs[$i]->date;        $data[$i]['浏览数'] = floatval($rs[$i]->view_count);        $data[$i]['被评论数'] = floatval($rs[$i]->comment_count);    }    MyExcel::makeExcel($excelTitle, $data, $excelFileName);}//end

这里只是简单的生成的xlsx,其他需要读取更复杂的,可以阅读官方的手册,有很详细的说明。

如果不需要保存,直接输出到浏览,如下:

//不用保存,直接输出到浏览器$objwriter = new PHPExcel_Writer_Excel2007($Excel);        header("Content-Type: application/force-download");        header("Content-Type: application/octet-stream");        header("Content-Type: application/download");        header('Content-Disposition:inline;filename=temp.xlsx');        header("Content-Transfer-Encoding: binary");        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");        header("Pragma: no-cache");        $objwriter->save('php://output');