/** * 数据导出到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; }