public function export(){
/*
* 导出操作:从数据库中读取的数据,导出到Excel表格
* $map : 搜索条件
*/
switch (I('post.status')) {
case '1':
$map['is_del'] = 0;
break;
case '2':
$map['is_del'] = 1;
break;
case '3':
$map['is_del'] = array('egt',0);
break;
default:
$map['is_del'] = 0;
break;
}
//设置编码为utf-8
header('content-type:text/html;charset=utf-8');
//导出的Excel表格的名字
$xlsName = "藏品列表";
//导出的Excel表格的表头
$xlsCell = array(
array('id','序号'),
array('title','名称'),
array('guide','导览'),
array('time','年代'),
array('url','封面'),
array('content','介绍'),
);
/*
* 依据搜索条件,在数据库中搜索数据
*/
$xlsData = M('collection as c')
->join('left join oa_material as m ON c.cover_url = m.id')
->field('c.id,c.title,c.guide,c.time,c.content,m.url')
->where($map)
->select();
// foreach($xlsData as $k=>$v) {
// $newxlsData[$key][] = strip_tags($v['content']);
// }
// echo "<pre>";
// print_r(count($newxlsData));
// print_r($newxlsData);
// die;
/*
* 调用公共函数文件function.php中的exportExcel()函数
* exportExcel()函数是做导出操作的
* $xlsName : Excel表格的名字
* $xlsCell : Excel表格的表头
* $xlsData : Excel表格的内容
*/
exportExcel($xlsName,$xlsCell,$xlsData);
}
<form action="{:U('collection/export')}" method="post" class="dao_form">
<input type="radio" name="status" id="on" value="1" /><label for="on">上架的展品</label><br><br>
<input type="radio" name="status" id="off" value="2" /><label for="off">下架的展品</label><br><br>
<input type="radio" name="status" id="all" value="3" checked/><label for="all">全部的展品</label><br><br>
<button type="submit" onclick="return check_explore()" target="_blank" class="btn btn-primary">导出</button>
</form>
function exportExcel($xlsName,$expCellName,$expTableData){
$fileName = $xlsName.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
$cellNum = count($expCellName);//得到表头的长度
$dataNum = count($expTableData);//得到内容的长度
vendor("Excel.PHPExcel");//引入EXCEL类包
$objPHPExcel = new \PHPExcel();//实例化类
$cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$fileName); //输入标题
$objPHPExcel->setActiveSheetIndex(0)->getStyle ( 'A1' )->getAlignment ()->setHorizontal ( \PHPExcel_Style_Alignment::HORIZONTAL_CENTER ); // 设置单元格水平对齐格式
$objPHPExcel->setActiveSheetIndex(0)->getStyle ( 'A1' )->getAlignment ()->setVertical ( \PHPExcel_Style_Alignment::VERTICAL_CENTER ); // 设置单元格垂直对齐格式
//输出标题栏
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
}
//输出内容栏
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
}
}
//导出
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$fileName.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}