之前做了个项目需要导出Excel文件 ,我在网上查了许多资料,最后终于搞定了 ,现在把代码贴到下面
先导入库文件:将文件phpoffice放在根目录的vendor下。获取文件点击:链接:https://pan.baidu.com/s/1G426c2sQKiJ453HZSHpeIQ 提取码:oj6f
接下来先说下没有图片的方法:
1. 先在application下面的command.php中添加如下的代码:
1 function excelExport($fileName = '', $headArr = [], $data = []) { 2 3 $fileName .= "_" . date("Y_m_d", time()) . "_".time().".xls"; 4 5 $objPHPExcel = new \PHPExcel(); 6 7 $objPHPExcel->getProperties(); 8 9 $key = ord("A"); // 设置表头 10 11 foreach ($headArr as $v) { 12 13 $colum = chr($key); 14 15 $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); 16 17 $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); 18 19 $key += 1; 20 21 } 22 23 $column = 2; 24 25 $objActSheet = $objPHPExcel->getActiveSheet(); 26 27 foreach ($data as $key => $rows) { // 行写入 28 29 $span = ord("A"); 30 31 foreach ($rows as $keyName => $value) { // 列写入 32 33 $objActSheet->setCellValue(chr($span) . $column, $value); 34 35 $span++; 36 37 } 38 39 $column++; 40 41 } 42 43 $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表 44 45 $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表 46 47 header('Content-Type: application/vnd.ms-excel'); 48 49 header("Content-Disposition: attachment;filename='$fileName'"); 50 51 header('Cache-Control: max-age=0'); 52 53 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 54 55 $objWriter->save('php://output'); // 文件通过浏览器下载 56 57 exit(); 58 }
然后在你的控制器中添加如下的代码:
1 public function excel() 2 { 3 4 5 $name='定制订单列表'; 6 $header=['序号','客户','日期','品类','价格','订单属性','客户来源','新老客户','顾问','所属店铺']; 7 /*需要哪张表的数据就查询哪张表的数据*/ 8 $list = DB::name('order')select(); 9 $str = array(); 10 foreach ($list as $k => $v) { 11 /*对应的数据库信息*/ 12 $str[] = ['字段1,'字段2','字段4','字段5','字段6','字段7','字段8','字段9','字段10','字段11']; 13 } 14 $data=$str; 15 excelExport($name,$header,$data); 16 }
然后调用方法execl就可以导出你想要的数据了