/**
* 数据导出到Excel文件
*
* @param object $data 要导出的数据内容
* @param object $headArr 设置Excel的头名称
* @param string $fileName 导出的文件名称
* @param string $width 设置单元格的宽度
*
* @throws PHPExcel_Exception 异常控制
* @throws PHPExcel_Reader_Exception 控制Excel加载时的异常
* @throws PHPExcel_Writer_Exception 控制Excel写入时的异常
* @return bool
*/
public function outPutExcel($data, $headArr, $fileName, $width = ‘30‘)
{
//如果没有数据返回false
if (empty($data) || !is_array($data)) {
return false;
}
//设置今天日期以便给Excel文件命名
$date = date("Y_m_d", time());
$fileName .= "_{$date}.xlsx";
//实例化PHPExcel对象
$objPHPExcel = new PHPExcel();
//设置表头
$index = ord("A");
$objActSheet = $objPHPExcel->getActiveSheet();
//生成表头
foreach ($headArr as $value) {
$columnHeader = chr($index);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($columnHeader . ‘1‘, $value);
$objActSheet->getColumnDimension($columnHeader)->setWidth($width);
$index += 1;
}
$columnData = 2;
foreach ($data as $key => $rows) {
$span = ord("A");
foreach ($rows as $keyName => $value) {
// 列写入
$j = chr($span);
$objActSheet->setCellValue($j . $columnData, $value);
$span++;
}
$columnData++;
}
//编码转换
$fileName = iconv("utf-8", "gbk", $fileName);
//设置活动单指数到第一个表,所以Excel打开这是第一个表
$objPHPExcel->setActiveSheetIndex(0);
//将输出重定向到一个客户端web浏览器(Excel2007)
header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
header("Content-Disposition: attachment; filename=\"$fileName\"");
header(‘Cache-Control: max-age=0‘);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007‘);
$objWriter->save(‘php://output‘); //文件通过浏览器下载
return true;
}
原文:https://www.cnblogs.com/yeshaoxiang/p/9210590.html