您的位置:首页 > 编程语言 > PHP开发

使用PHP导出数据库内容到Excel表格

2017-04-11 15:36 363 查看
使用PHP导出数据库内容到Excel表格

首先根据需求要分为用户信息,商家信息,团单信息,优惠券信息,订单信息导出,我是用的下拉列表通过onchange事件执行ajax请求到控制器处理,之后输出到视图层,如下:

<select id="downtype" name="downtype" onchange="ajaxchangetype()">
<option value="0">--请选择--</option>
<?php if(isset($type)){foreach($type as $k => $v){?> <!--下载的分类是从配置文件加载进来的-->
<option value="<?php echo $k?>"><?php echo $v?></option>
<?php }}?>
</select>

<script type="text/javascript">
function ajaxchangetype()
{
var type = $("#downtype").val();
$.ajax({
url:'',
type:'post',
async:true,
data:{
type:type,
},
dataType:'text',
success:function(data){
if(isNaN(data))
{
$("#citylist").html(data);
$("#down").html("<input type='submit' class='formbutton' value='下载'>");
}else
{
window.location.reload();
}
},
})
}
</script>


控制器部分

//获取所有城市和地区
$allcities = Category::getCategoryList('city');
foreach($allcities as $k=> $v)
{
$allcities[$k]['child'] = Category::getCategoryList('area', $v['id']);
}
$list = [];
//把用来显示城市联动的html都存进$list中
foreach($allcities as $k => $v)
{
$list[] = "<option value='".$v['id']."'>".$v['name']."</option>";
foreach($v['child'] as $v2){
$list[] = "<option value='".$v2['id']."'>|---".$v2['name']."</option>";
}
}
//前台通过onchange事件传不同的参数进这个方法,对每个参数进行处理后通过ajax显示到视图

$datalist = "用户ID:<input type='number' name='#'/><br><br>城市列表:<select id='#' name='#'><option value='0'>全部地区</option>".implode($list)."</select>";
exit($datalist);
//通过switch case 对不同的参数处理,就不一一列举了


表单提交后的控制器

case "partner":
//商家信息下载
if(!empty($_POST['partnername'])){$where['你的数据库字段名'] = $_POST['partnername'];}
if(!empty($_POST['cityid'])){$where['你的数据库字段名'] = $_POST['cityid'];}
//根据表单提交的值到相应的model查询,返回数据
if(empty($where))
{
$partnerlist = Partner::getPartnersDownload();//进入你的模型取出需要的数据
}else
{
$partnerlist = Partner::getPartnersDownload($where);
}
if(empty($partnerlist))
{
exit("未找到商家信息");
}
//配置excel的列表头如
$kn = array('id' => '商家ID','name' => '商家名称')等;
//导出文件的文件名,我习惯是一个字符串_时间的格式
$name = "你喜欢就好_".date('Ymd');
down_excel($partnerlist, $kn, $name);//执行导出函数
break;


最后执行导出的函数

/**
* 数据导出到Excel
* @param [arr] $data 导出数据
* @param [arr] $keynames 列表头
* @param [string] $name 文件名
* @param [string] $index 控制excel起始ID
*/
function down_excel($data, $keynames, $name,$index=0){
$xls[] = "<html><meta http-equiv=content-type content=\"text/html; charset=UTF-8\"><body><table border='1'>";
$xls[] = "<tr><th>ID</th><th>" . implode("</th><th>", array_values($keynames)) . '</th></tr>'; //输出excel列表头
foreach($data As $o){
$line = array(++$index);
foreach($keynames AS $k=>$v){
$line[] = $o[$k];
}
$xls[] = '<tr><td>'. implode("</td><td>", $line) . '</td></tr>'; //通过循环输出内容
}
$xls[] = '</table></body></html>';
$xls = join("\r\n", $xls);
header('Content-Disposition: attachment; filename="'.$name.'.xls"'); //生成文件
die(mb_convert_encoding($xls,'UTF-8','UTF-8')); //字符编码转换
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 php ajax excel