这里有三种php导出excel的方法,如下:
方法一:使用制表符、换行符模拟Excel导出
$filename=”ExportExcel.xls”;//定义一个excel文件 header(“Content-Type: application/vnd.ms-execl”); header(“Content-Type: application/vnd.ms-excel;charset=UTF-8″); header(“Content-Disposition: attachment; filename=$filename”); header(“Pragma: no-cache”); header(“Expires: 0″); //设置excel输出表头,当然这不是必须的 echo iconv(“UTF-8″, “gb2312″, “ID”).”\t”; echo iconv(“UTF-8″, “gb2312″, “Col1″).”\t”; echo iconv(“UTF-8″, “gb2312″, “Col2″).”\t”; echo iconv(“UTF-8″, “gb2312″, “Col3″).”\t”; echo iconv(“UTF-8″, “gb2312″, “Col4″).”\n”;//注意这个要换行 //连接数据库 mysql_query(“SET NAMES utf8″); $result=”SELECT * FROM”); while($row =mysql_fetch_array($result)){ echo iconv(“UTF-8″, “gb2312″, $row[0]).”\t”; echo iconv(“UTF-8″, “gb2312″, $row[1]).”\t”; echo iconv(“UTF-8″, “gb2312″, $row[2]).”\t”; echo iconv(“UTF-8″, “gb2312″, $row[3]).”\t”; echo iconv(“UTF-8″, “gb2312″, $row[4]).”\n”; }
这个方法最简单,但是导出的文件并不是真正的Excel,无法设置格式,而且在Mac版的MS Office上无效。
这个方法还有一个bug,如果导出的数据中某个字段内容比较多,数据量多余30条的话,导出的数据会丢失甚至无法导出,所以用这种方法的话要慎重。
方法二:使用php-excel类导出excel
简单小巧的Excel类库,可自行修改相关代码设置单元格格式,导出的实际上市XML格式的电子表格。
// load library require ‘php-excel.class.php’; // create a simple 2-dimensional array $data = array( 1 => array (‘Name’, ‘Surname’), array(‘Schwarz’, ‘Oliver’), array(‘Test’, ‘Peter’) ); // generate file (constructor parameters are optional) $xls = new Excel_XML(‘UTF-8′, false, ‘My Test Sheet’); $xls->addArray($data); $xls->generateXML(‘my-test’);
方法三:使用PHPExcel类导出excel
功能强大、全面,支持office2003、office2007与之相应的是过于臃肿,比较复杂。