我们正常在windows下使用Excel表格的步骤是什么呢?
创建表格,使用当前的Sheet(内指标),填充数据,保存。php创建Excel也是一样执行过程是
$objPHPExcel=new PHPExcel();
//实例化PHPExcel类, 等同于在桌面上新建一个excel
$objPHPExcel->createSheet();
//创建新的内置表
$objPHPExcel->setActiveSheetIndex($i-1);
//把新创建的sheet设定为当前活动sheet
$objSheet=$objPHPExcel->getActiveSheet();/
/获取当前活动sheet
$objSheet->setCellValue("A1","")->setCellValue("B1");
//填充数据
setCellValue()方法:传递两个参数。第一个代表数据存放位置,第二个代表数据
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel5");
//生成excel文件$objWriter->save("demo.xls");
//保存文件到本地
过程结束。
填充数据的简单方法
$array=array(
array(); //第一个数组代表第一行
array('张三','李四','二麻子');多一个数据代表多一列
array();
);
$objSheet->fromArray($array);直接加载数组填充数据
//此方法比较占内存和消耗CPU(数据少推荐使用)
输出到浏览器保存
browser_export('Excel5','browser_excel03.xls');//输出到浏览器
$objWriter->save("php://output"); //PHP输出一个 只写的数据流,
function browser_export($type,$filename){
if($type=="Excel5"){
header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
}else{
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件
}
header('Content-Disposition: attachment;filename="'.$filename.'"');//告诉浏览器将输出文件的名称
header('Cache-Control: max-age=0');//禁止缓存
}
完整代码示例
<?php
$dir=dirname(__FILE__);//查找当前脚本所在路径
require $dir."/db.php";//引入mysql操作类文件
require $dir."/PHPExcel/PHPExcel.php";//引入PHPExcel
$db=new db($phpexcel);//实例化db类 连接数据库
$objPHPExcel=new PHPExcel();//实例化PHPExcel类, 等同于在桌面上新建一个excel
for($i=1;$i<=3;$i++){
if($i>1){
$objPHPExcel->createSheet();//创建新的内置表 当创建后默认有有个sheet 所以第二个开始创建
}
$objPHPExcel->setActiveSheetIndex($i-1);//把新创建的sheet设定为当前活动sheet sheet类似数组从0开始的
$objSheet=$objPHPExcel->getActiveSheet();//获取当前活动sheet
$objSheet->setTitle($i."年级");//给当前活动sheet起个名称
$data=$db->getDataByGrade($i);//查询每个年级的学生数据
$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级");//填充数据
$j=2;
foreach($data as $key=>$val){
$objSheet->setCellValue("A".$j,$val['username'])->setCellValue("B".$j,$val['score'])->setCellValue("C".$j,$val['class']."班");
$j++;
}
}
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');//生成excel文件
//$objWriter->save($dir."/export_1.xls");//保存文件
browser_export('Excel5','browser_excel03.xls');//输出到浏览器
$objWriter->save("php://output");
function browser_export($type,$filename){
if($type=="Excel5"){
header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
}else{
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件
}
header('Content-Disposition: attachment;filename="'.$filename.'"');//告诉浏览器将输出文件的名称
header('Cache-Control: max-age=0');//禁止缓存
}
?>