此实例是yii2框架调用phpExcel展示实例(yii2如何增加phpExcel类请看另一篇文章)
/**
* 批量导出数据
* @param $arr 从数据库查询出来,即要导出的数据
* $name excel表歌名
*/
function expExcel($arr,$name){
//require_once 'PHPExcel.php';
Vendor('PHPExcel.PHPExcel');
Vendor('PHPExcel.Autoloader');
//实例化
$objPHPExcel = new \PHPExcel();
/*右键属性所显示的信息*/
$objPHPExcel->getProperties()->setCreator("zxf") //作者
->setLastModifiedBy("zxf") //最后一次保存者
->setTitle('数据EXCEL导出') //标题
->setSubject('数据EXCEL导出') //主题
->setDescription('导出数据') //描述
->setKeywords("excel") //标记
->setCategory("result file"); //类别
//设置当前的表格
$objPHPExcel->setActiveSheetIndex(0);
// 设置表格第一行显示内容
$objPHPExcel->getActiveSheet()
->setCellValue('A1', '产品id')
->setCellValue('B1', '报价id')
->setCellValue('C1', '库存')
->setCellValue('D1', '供应商')
//设置第一行为红色字体
->getStyle('A1:D1')->getFont()->getColor()->setARGB(\PHPExcel_Style_Color::COLOR_RED);
$key = 1;
/*以下就是对处理Excel里的数据,横着取数据 $arr就是你查询出来的数组*/
foreach($arr as $v){
//设置循环从第二行开始
$key++;
$objPHPExcel->getActiveSheet()
//Excel的第A列,name是你查出数组的键值字段,下面以此类推
->setCellValue('A'.$key, $v['procode'])
->setCellValue('B'.$key, $v['bjid'])
->setCellValue('C'.$key, $v['realkucun'])
->setCellValue('D'.$key, $v['supplier']);
}
//设置当前的表格
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean(); //清除缓冲区,避免乱码
header('Content-Type: application/vnd.ms-excel'); //文件类型
header('Content-Disposition: attachment;filename="'.$name.'.xls"'); //文件名
header('Cache-Control: max-age=0');
header('Content-Type: text/html; charset=utf-8'); //编码
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');//新路径
$objWriter->save('php://output');//这个语法是写保存地址的,但是改了会报错,不知道为啥
exit;
}
下面介绍一下phpExcel类操作的基本用法及作用的注释
PHPExcel扩展包地址:https://github.com/wanqianworld/phpexcel-1.8
1.引入PHPExcel文件:require_once("../Classes/PHPExcel.php");
2.实例化PHPExcel:$ObjPHPExcel = new PHPExcel();
3.获取当前工作sheet:$ObjPHPExcel->getACtiveSheet();
4.给当前工作表设置名称:$ObjPHPExcel->setTitle('sheet表名称');
5.添加数据,赋值:$ObjPHPExcel->setCellValue('单元格坐标','值');
6.按照指定格式生成excel文件: $ObjPHPExcel->PHPExcel_IOFactory::createWriter($ObjPHPExcel,'Excal5');
7.保存Excel文件:$ObjPHPExcel->save('保存路径及文件名');//目前这个我写绝对地址不会报错但影响整个文件无法保存,还在学习中
8.如果要将生成的Excel文件输出到浏览器:
Excel5需要添加以下代码:
header("Content-type:application/vnd.ms-excel");//输出Excel03文件
header("Content-Disposition:attachment;filename=test.xls');
header("Content-Control:max-age = 0");
$ObjPHPExcel->save("php://output");
Excel7需要添加以下代码:
header("Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//输出Excel07文件
header("Content-Disposition:attachment;filename=test.xlsx');//浏览器输出文件名称
header("Content-Control:max-age = 0");//禁止浏览器缓存
$ObjPHPExcel->save("php://output");