一、ThinkPHP5.0框架的extend文件夹下引入PHPExcel插件
二、公共类下的函数:
/**
* 将数据 导出为 xls 格式 成功
* @param $headArr //表头
* @param $data //查询数据
* @param $filename //下载文件名
* 示例:
* $data = db('message')->whereIn('id', $ids)->select();
* $field = array(
* 'A' => array('id', '唯一标识符'),
* 'B' => array('title', '主题'),
* 'C' => array('phonenum', '电话'),
* 'D' => array('addtime', '时间'),
* );
* phpExcel($field, $data, date('Y-m-d'));
*/
function phpExcel($headArr, $data, $filename)
{
//引入文件
require_once(EXTEND_PATH . 'PHPExcel/Classes/PHPExcel.php');
//实例化
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
foreach ($data as $key => $value) {
foreach ($headArr as $k => $v) {
//设置报表列头
if ($key == 0) {
$objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);
}
//添加表格内容
$i = $key + 2; //表格是从2开始的
$objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);
/**
* 表格相关设置
*/
//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
//都按原始内容全部显示出来
$objPHPExcel->getActiveSheet()->getStyle($k.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
//设置单元格宽度自适应文本长度
$objPHPExcel->getActiveSheet()->getColumnDimension($k)->setAutoSize(true);
//水平居中
// $objPHPExcel->getActiveSheet()->getStyle($k . $i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//垂直居中
// $objPHPExcel->getActiveSheet()->getStyle($k . $i)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//文本自动换行
$objPHPExcel->getActiveSheet()->getStyle($k . $i)->getAlignment()->setWrapText(true);
}
}
//给客户端发送 下载格式为xls 的 头信息
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename=' . $filename . '.xls');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
}
三、在控制器中调用函数,下载成文件