首先是用到了PHPExcel这个类,你能够去官网下载一个而后随便找个位置复制过去,我把他粘到了vendor里面;php
excel导出是吧数据一行一行的写入到excel而后再下载下来;app
第一行通常是表头:post
public function excel()
{
$data = array();excel
//个人数据信息
$LuntanContentModel = new \app\luntan\model\LuntanContent();
$contentRows = $LuntanContentModel->select();
if($contentRows){
foreach ($contentRows as $contentRow){
$info = array();
$row = $contentRow->toArray();对象
$info['id'] = $row['id'];
$info['author'] = $row['author'];
$info['abstract'] = $row['abstract'];
$info['title_simple'] = $row['title_simple'];
$info['title'] = $row['title'];
$info['browse'] = $row['browse'];
$data[] = $info;
}
}
//定义表名称
$name = 'ABC';get
//引入PHPExcel,注意看一下是引入的什么!并非你下载PHPExcel 都是须要的,须要什么就拿过来什么好了
Vendor("PHPExcel.Classes.PHPExcel"); ,
$excel = new \PHPExcel();it
//定义列数,与excel中的列的命名同样
$letter = array('A', 'B', 'C', 'D', 'E', 'F', 'F', 'G');io
//定义表头信息
$tableheader = array('ID', '做者', '摘要', '简约标题', '标题', '浏览量');table
for ($i = 0; $i < count($tableheader); $i++)
{
$excel->getActiveSheet()->setCellValue("$letter[$i]1", "$tableheader[$i]");
}function
//写入信息到excel
for ($i = 2; $i <= count($data) + 1; $i++)
{
$j = 0;
foreach ($data[$i - 2] as $key => $value)
{
$excel->getActiveSheet()->setCellValue("$letter[$j]$i", "$value");
$j++;
}
}
// $dat的数据类型是这样的
// array[
// array1[],
// array2[].
…
]
//建立Excel输入对象
$write = new \PHPExcel_Writer_Excel5($excel);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename="'.$name.'".xls"');
header("Content-Transfer-Encoding:binary");
$write->save('php://output');
}