TP5 导出数据到Excel
作者:互联网
public function outputToExcelDemo(){ $header = []; $style = []; $info = []; //1.获取数据 $outface = new Outface(); $resIntaerfaceData = $outface->getAllData('http://www.tp5.com/index.php/admin/index/index/table/comm_account'); //获取当前页面的所有数据 //2.提取表头数据 foreach ( $resIntaerfaceData['item'][0] as $key=>$value){ array_push($header,$key); } //3.提取主要数据 $data = $resIntaerfaceData['item']; //4.提取文件信息 $info['name'] = $resIntaerfaceData['table']; //5.调用处理函数 $objExcelAbout = new ExcelAbout(); $objExcelAbout->outputToExcel($data, $header, $style, $info); }
/* * 数据库数据导出为excel文件 * $data: 二维数组 , 主要数据内容 * $header:一维数组, 表头数据 * $style:一维数组, 表格样式 * $info: 一维数组, 文件信息 * */ public function outputToExcel($data, $header, $style, $info) { /* * 数据重组(excel格式) */ $cellHeader = []; //表头重组后的数据 $coderArr = array( 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ); //表头重组 for ($i = 0, $n = count($header); $i < $n; $i++) { if ($i < 26) { $cellHeader[$coderArr[$i]] = $header[$i]; } else { $key = $coderArr[(int)($i / 26) - 1] . $coderArr[(int)($i % 26)]; $cellHeader[$key] = $header[$i]; } } //数据重组 $cellData = []; for ($j = 0, $m = count($data); $j < $m; $j++) { $cellDataItem = []; foreach ($cellHeader as $key => $value) { $cellDataItem[$key] = $data[$j][$value]; } array_push($cellData, $cellDataItem); } $this->excel = new \PHPExcel(); //PHPExcel实例化对象 /** * 设置文件的一些属性,在xls文件——>属性——>详细信息里可以看到这些值,xml表格里是没有这些值的, 可以不要 **/ $this->excel->getProperties()//获得文件属性对象,给下文提供设置资源 ->setCreator("jiekeliu")//设置文件的创建者 ->setLastModifiedBy("jiekeliu")//设置最后修改者 ->setTitle("接口数据转存Excel")//设置标题 ->setSubject("数据转存")//设置主题 ->setDescription("coder by jiekeliu")//设置备注 ->setKeywords("office 2007 openxmlphp")//设置标记 ->setCategory("test"); //设置类别 /** * 设置表格的内容 **/ //设置表头 foreach ($cellHeader as $k => $v) { $index = (string)($k . '3'); $this->excel->setActiveSheetIndex(0)->setCellValue($index, $v); $this->excel->getActiveSheet() ->getStyle($index) ->getFont() ->setName('宋体')//样式:宋体 ->setSize(20)//大小:20 ->setBold(true); //加粗:是 $this->excel->getActiveSheet() ->getStyle($index) ->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //水平方向上对齐 $this->excel->getActiveSheet() ->getColumnDimension($k) ->setAutoSize(true); //内容自适应 } //设置主体数据 for ($i = 0, $n = count($cellData); $i < $n; $i++) { foreach ($cellData[$i] as $k => $v) { $m = (string)($i + 4); $index = (string)($k . $m); $this->excel->setActiveSheetIndex(0)->setCellValue($index, $v); $this->excel->getActiveSheet() ->getStyle($index) ->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //水平方向上对齐 } } $this->excel->getActiveSheet()//获取正在的活动表 ->setTitle($info['name']); //设置表名称 Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Content-type:application/vnd.ms-excel"); Header("Content-Disposition:attachment;filename=" . $info['name'] . ".xlsx "); $objWriter = new PHPExcel_Writer_Excel2007($this->excel); //保存为2007版的excel文件 $objWriter->save('php://output'); exit; } }
标签:info,index,Excel,key,excel,导出,header,TP5,设置 来源: https://www.cnblogs.com/catyxiao/p/15976302.html