项目中常常会遇到 要把数据导出成*.xls 格式的文件 这时候就用到了 PHPExcel
下面下面是一个导出留言的例子 获取数据的部分我就不写了
主要附上 PHPExcel 的部分
/*
* ThinkPHP + PHPExcel 导出数据
*
* 首先 下载 PHPExcel 代码包 解压后 把 Classes 下的文件 复制到 Think/Libray/Vendor/目录下
*
* 以下代码 可以封装成一个函数 下面活动的变量 有 $name 导出的文件名 $data 导出的数据
*/
// 导入文件
Vendor('PHPExcel', '', '.php');
$objPHPExcel = new \PHPExcel();
// 设置excel的属性:
$objPHPExcel->getProperties()
// 创建人
->setCreator("reyaun")
// 最后修改人
->setLastModifiedBy("reyaun")
// 标题
->setTitle("留言板数据导出")
// 题目
->setSubject("数据EXCEL导出")
// 描述
->setDescription("留言板数据导出")
// 关键字
->setKeywords("excel")
// 种类
->setCategory("result file");
//以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改
foreach($data as $k => $v){
$num=$k+1;
// 设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0)
// Excel的第A列,根据数据的键值 按顺序设定值
->setCellValue('A'.$num, $v['name'])
->setCellValue('B'.$num, $v['phone'])
->setCellValue('C'.$num, $v['weixin'])
->setCellValue('D'.$num, $v['addres'])
->setCellValue('E'.$num, $v['content'])
->setCellValue('F'.$num, $v['addtime']);
}
// 设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle('User');
// 设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
// 设置头信息 注意 $name 是文件名
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$name.'.xls"');
header('Cache-Control: max-age=0');
// 创建 数据
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
// 直接输出到浏览器
$objWriter->save('php://output');
exit;