前端按钮
导出Excel
AJAX提交
$(function () {
$(".excel").on("click",function () {
var data = $(".inputcheckbox:checked").map(function (i,e){return $(e).val()}).get().join(','),
_url = $(this).attr("_href");
$.post(_url,{data:data},function(data){
if (data.status) {
window.location.href = "{:U(CONTROLLER_NAME.'/excel')}/excid/"+data.excid;
}
},'json');
});
})
控制器方法:
//导出excel
public function excel () {
//处理勾选内容
if (IS_AJAX) {
$this->ajaxReturn(array('excid'=>I('post.data',0),'status'=>1));
}
$excid = I('get.excid');
if (empty($excid)) {
$data = $this->feedback->select(); //整表查询
} else {
$data = $this->feedback->where(array('id'=>array('IN',explode(",", $excid))))->select(); //条件查询
}
$fields = $this->feedback->getDbFields(); //获取数据表 字段
$name = C('name') ? C('name') : 'Excel'.date('Y-m-d'); //导出Excel名称
$this->exportExcel($data, C('name'), $fields); //开始导出
}
//导出方法
public function exportExcel($data, $savefile = null, $title = null, $sheetname = 'sheet1') {
Vendor('Excel.PHPExcel');
//若没有指定文件名则为当前时间戳
if (is_null($savefile)) {
$savefile = time();
}
//若指字了excel表头,则把表单追加到正文内容前面去
if (is_array($title)) {
array_unshift($data, $title);
}
$objPHPExcel = new \PHPExcel();
//Excel内容
$head_num = count($data);
foreach ($data as $k => $v) {
$obj = $objPHPExcel->setActiveSheetIndex(0);
$row = $k + 1; //行
$nn = 0;
foreach ($v as $vv) {
$col = chr(65 + $nn); //列
$obj->setCellValue($col . $row, $vv); //列,行,值
$nn++;
}
}
//设置列头标题
for ($i = 0; $i
$alpha = chr(65 + $i);
$objPHPExcel->getActiveSheet()->getColumnDimension($alpha)->setAutoSize(true); //单元宽度自适应
$objPHPExcel->getActiveSheet()->getStyle($alpha . '1')->getFont()->setName("Candara"); //设置字体
$objPHPExcel->getActiveSheet()->getStyle($alpha . '1')->getFont()->setSize(12); //设置大小
$objPHPExcel->getActiveSheet()->getStyle($alpha . '1')->getFont()->getColor()->setARGB(\PHPExcel_Style_Color::COLOR_BLACK); //设置颜色
$objPHPExcel->getActiveSheet()->getStyle($alpha . '1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //水平居中
$objPHPExcel->getActiveSheet()->getStyle($alpha . '1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); //垂直居中
$objPHPExcel->getActiveSheet()->getStyle($alpha . '1')->getFont()->setBold(true); //加粗
}
$objPHPExcel->getActiveSheet()->setTitle($sheetname); //题目
$objPHPExcel->setActiveSheetIndex(0); //设置当前的sheet
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $savefile . '.xls"'); //文件名称
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); //Excel5 Excel2007
$objWriter->save('php://output');
$this->success("导出Excel成功",U('Feedback/index'));
}