一、 下载phpExcel,并放在框架目录下。目录位置如下(excel文件夹自己建的。)

二、在新建好的excel文件夹下创建ExcelToArray.class.php类。
注意这里类的名字不能省去.class。代码如下
<?php
class ExcelToArrary {
public function __construct() {
/*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/
include_once('PHPExcel.php');
}
/* 导出excel函数*/
public function push($data,$name='Excel'){
error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
$objPHPExcel = new PHPExcel();
//以下是一些设置 ,什么作者 标题啊之类的
$objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置所有格居中显示
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);//单个单元格居左
$objPHPExcel->getActiveSheet()->getStyle('A2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);//单个单元格居左
$objPHPExcel->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("B")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("C")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("D")->setAutoSize(true);//设置单元格自动宽度
//$objPHPExcel->getActiveSheet()->getColumnDimension("E")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("F")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("G")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("H")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("I")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("J")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("K")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("L")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("M")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("N")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("O")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("P")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("Q")->setAutoSize(true);//设置单元格自动宽度
$objPHPExcel->getActiveSheet()->getColumnDimension("R")->setAutoSize(true);//设置单元格自动宽度
/*$objPHPExcel->getProperties()->setCreator("admin")
->setLastModifiedBy("admin")
->setTitle("启扬文华传媒")
->setSubject("数据EXCEL导出")
->setDescription("备份数据")
->setKeywords("AAA")
->setCategory("result file");*/
/*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/
foreach($data as $k => $v){
$num=$k+5;
if($v['a_zt'] >=1){$finish ="已完成";}else{$finish ="未完成";}
if($v['a_zt'] >=2){$audit ="已审核";}else{$audit ="未审核";}
if($v['a_zb'] =1){$zb ="中标";}else{$zb ="流标";}
if($v['a_btime'] == null){$btime="未退单";}else{$btime=$v['a_btime'];}
if($v['a_itime'] == null){$itime="未接单";}else{$itime=$v['a_itime'];}
if($v['a_fitme'] == null){$ftime="未上传";}else{$ftime=$v['a_fitme'];}
if($v['a_bz'] == null){$bz="暂无";}else{$bz=$v['a_bz'];}
$objPHPExcel->getActiveSheet()->mergeCells('H4:K4');//合并单元格
$objPHPExcel->getActiveSheet()->mergeCells('H'.$num.':K'.$num);//合并单元格
$objPHPExcel->getActiveSheet()->mergeCells('A1:B1');//合并单元格
$objPHPExcel->getActiveSheet()->mergeCells('A2:D2');//合并单元格
$objPHPExcel->setActiveSheetIndex(0)
//Excel的第A列,id是你查出数组的键值,下面以此类推
//先设置标题行
->setCellValue('A1', '操作者:'.$_SESSION["adminuser"])
->setCellValue('A2', '导出时间:'.date("Y-m-d H:i:s",time()))
->setCellValue('A4', '设计师')
->setCellValue('B4', '序号')
->setCellValue('C4', '退单时间')
->setCellValue('D4', '接单时间')
->setCellValue('E4', '单号')
->setCellValue('F4', '要求')
->setCellValue('G4', '客户姓名')
->setCellValue('H4', '客户联系方式')
->setCellValue('L4', '设计时间')
->setCellValue('M4', '完成情况')
->setCellValue('N4', '审核状态')
->setCellValue('O4', '中标/流标')
->setCellValue('P4', '上传日期')
->setCellValue('Q4', '备注')
//填充数据
->setCellValue('A'.$num, $v['a_user'])
->setCellValue('B'.$num, $v['a_xh'])
->setCellValue('C'.$num, $btime)
->setCellValue('D'.$num, $itime)
->setCellValue('E'.$num, $v['a_dh']."\t")
->setCellValue('F'.$num, $v['a_content'])
->setCellValue('G'.$num, $v['a_khname'])
->setCellValue('H'.$num, "手机".$v['a_khphone'])
->setCellValue('I'.$num, "QQ".$v['a_khqq'])
->setCellValue('J'.$num, "微信".$v['a_khwx'])
->setCellValue('K'.$num, "旺旺".$v['a_khww'])
->setCellValue('L'.$num, $v['a_dtime'])
->setCellValue('M'.$num, $finish)
->setCellValue('N'.$num, $audit) //审核状态
->setCellValue('O'.$num, $zb)//中标/流标
->setCellValue('P'.$num, $ftime)
->setCellValue('Q'.$num, $bz);
}
$objPHPExcel->getActiveSheet()->setTitle('User');
$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');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
}三、控制器中的用法在这里因为ExcelToArray.class.php类没有使用命名空间,所有引入时用import(),而不是Vendor(),这是个坑。代码如下。
//导出execl文件
if($_GET['execlId']){//判断是否为导出操作
$name='启扬传媒任务导出表'.date("YmdHms",time()); //生成的Excel文件文件名
import("Vendor.excel.ExcelToArrary"); //引入ExcelToArrary
$res=new \ExcelToArrary();
$res->push($list,$name);//$list是查询出的数据库内容
}四、html界面。这里随便啦,只要调用对用控制器和方法就行<input name="" type="button" class="btn" onclick=execl() value="导出EXECL文件"/>
//js
function execl(){
window.location.href="__APP__/Home/Index/jsbz_list_finish/execlId/1";
}导出效果
以上就是全部代码了。这里有个问题要说明一下,如果导出数据时有很长的数字可以在数字导出时加上 "\t" 那导出来显示完整
->setCellValue('E'.$num, $v['a_dh']."\t")自己也是小白一枚,有什么问题希望大伙多多指教!phpexcel源码百度云:http://pan.baidu.com/s/1nuEvJz7
最佳答案