/**
* 下载excel数据表格
* @param $fileName
* @param $headArr
* @param $data
* @throws PHPExcel_Reader_Exception
*/
public function getExcel($fileName,$headArr,$data){
//导入excel类库
include APP.‘/lib/PHPExcel.php‘;
include APP.‘/lib/PHPExcel/IOFactory.php‘;
$date = date("Y_m_d",time());
$fileName .= "_{$date}.xls";
//phpExcel大数据量情况下内存溢出解决
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array(‘memoryCacheSize‘=>‘16MB‘);
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
//创建PHPExcel对象
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setTitle("export")->setDescription("none");
//设置表头
$key = ord("A");
foreach($headArr as $v){
$colum = chr($key);
$objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.‘1‘, $v);
$key += 1;
}
//数据从第二行开始
$column = 2;
foreach($data as $key => $rows){ //行写入
$span = ord("A");
foreach($rows as $keyName=>$value){// 列写入
$j = chr($span);
$objPHPExcel->getActiveSheet(0)->setCellValue($j.$column, $value);
$span++;
}
$column++;
}
//文件名
$fileName = iconv("utf-8", "gb2312", $fileName);
// sheet命名
$objPHPExcel->getActiveSheet()->setTitle(‘列表‘);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = IOFactory::createWriter($objPHPExcel, ‘Excel2007‘);
/* 生成到浏览器,提供下载 */
ob_end_clean(); //清空缓存
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‘);
exit;
}
原文:http://my.oschina.net/yonghan/blog/479734