[手動狗臉]
交代一下背景:用的是TP 的框架,導出用的插件是PHPExcel
以下為目錄結構:
直接上代碼:
class ExportAction extends Action
{/*** Excel導出* @param $fileName(文件名)* @param $headArr (表頭)* @param $data (每一行的數據)* @throws \PHPExcel_Exception* @throws \PHPExcel_Reader_Exception*/function exportExcel(){include_once(THINK_PATH . "Extend/Vendor/PHPExcel/PHPExcel.php");include_once(THINK_PATH . "Extend/Vendor/PHPExcel/PHPExcel/Writer/Excel2007.php");include_once(THINK_PATH . "Extend/Vendor/PHPExcel/PHPExcel/Writer/Excel5.php");include_once(THINK_PATH . "Extend/Vendor/PHPExcel/PHPExcel/IOFactory.php");$data = self::getData();$fileName="數據詳情";$headArr=self::getColumn();if (empty($data) || !is_array($data)) {die("data must be a array");}if (empty($fileName)) {exit;}$date = date("Y_m_d", time());$fileName .= "_{$date}.xlsx";//創建新的PHPExcel對象$objPHPExcel = new \PHPExcel();$objProps = $objPHPExcel->getProperties();//設置表頭$key = ord("A");$key2 = ord("A");$colum2 = '';$objActSheet = $objPHPExcel->getActiveSheet();$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25);foreach ($headArr as $v) {$colum = chr($key);$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum2 . $colum . '1', $v);if ($key < 90) {$key += 1;} else {$key = ord("A");$colum2 = chr($key2);$key2++;}}//exit;$column = 2;foreach ($data as $key => $rows) { //行寫入$span = ord("A");$span2 = ord("A");$j2 = '';foreach ($rows as $keyName => $value) {// 列寫入$j = chr($span);//$objActSheet->setCellValue($j.$column, $value);//把每個單元格設置成分文本類型//dump($j2.$j.$column);$objActSheet->setCellValueExplicit($j2 . $j . $column, $value, \PHPExcel_Cell_DataType::TYPE_STRING);if ($span < 90) {$span += 1;} else {$span = ord("A");$j2 = chr($span2);$span2++;}}$column++;}// exit;$fileName = iconv("utf-8", "gb2312", $fileName);//重命名表$objPHPExcel->getActiveSheet()->setTitle('Simple');//設置活動單指數到第一個表,所以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');if (!empty($_GET['excel'])) {$objWriter->save('php://output'); //文件通過瀏覽器下載} /*else {$objWriter->save($fileName); //腳本方式運行,保存在當前目錄}*/$objWriter->save('php://output');exit;}// 處理問卷調查數據function getData(){$answer = M("answer");$where['id'] = $_GET['id'];$answer->where($where)->getField("answers");$studentList = [['20190101', 'student01', '1班','school2'],['20190102','student02', '1班'],['20190103','student03', '1班','school3']];return $studentList;}//Excel 列標題protected function getColumn(){$collist=['名字','學校','班級','年齡','a5','a6','a7','a8','a9','a10','a11','a12','a13','a14','a15','a16','a17','b1','b2','b3','b4','b5','b6','c1','c2','c3','c4','c5','c6','c7','c8','c9','c10','c11','c12', 'd1','d2','d3','d4', 'e1 ','e2','e3','e4','e5','e6','e7','e8','e9','e10','e11','f1','f2','f3','f4','f5','f6','f7','f8','f9','g1','g2','g3','g4','g5','g6','g7','g8','g9','g10','g11','g12','g13','g14','g15','g16','g17','g18','g19','g20','g21','g22','g23','g24','g25','g26','g27','g28','g29','g30','g31','g32','g33','g34','g35'];return $collist;}
}
附上效果圖:
參考鏈接:www.jb51.net/article/147099.htm
總結
以上是生活随笔為你收集整理的PHP 导出数据到Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。