**html代码**
<a class="btn btn-danger btn-import" onclick="tableToExcel()" data-toggle="dropdown"><i class="fa fa-upload"></i>导出</a>
**js代码**
const jsonData = data;//这个是后台输出的数据
//列标题,逗号隔开,每一个逗号就是隔开一个单元格
let str = `ID,姓名,手机号,性别,出身年月,余额,积分,加入时间,过敏史\n`;
//增加\t为了不让表格显示科学计数法或者其他格式
for(let i = 0 ; i < jsonData.length ; i++ ){
for(let item in jsonData[i]){
str+=`${jsonData[i][item] + '\t'},`;
}
str+='\n';
}
//encodeURIComponent解决中文乱码
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
//通过创建a标签实现
let link = document.createElement("a");
link.href = uri;
//对下载的文件命名
link.download = "患者账户列表.xls";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
**用ajax可以这样写**
function tableToExcel(){
$.ajax({
type: "post",
url: "user/tabletoexcel",
data: {'search_key':search_key},
success : function(data){
console.log(data);
if (data.length > 0) {
const jsonData = data;
//列标题,逗号隔开,每一个逗号就是隔开一个单元格
let str = `ID,姓名,手机号,性别,出身年月,余额,积分,加入时间,过敏史\n`;
//增加\t为了不让表格显示科学计数法或者其他格式
for(let i = 0 ; i < jsonData.length ; i++ ){
for(let item in jsonData[i]){
str+=`${jsonData[i][item] + '\t'},`;
}
str+='\n';
}
//encodeURIComponent解决中文乱码
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
//通过创建a标签实现
let link = document.createElement("a");
link.href = uri;
//对下载的文件命名
link.download = "患者账户列表.xls";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
} else {
layer.msg('导出失败', {icon: 2});return;
}
}
});
}
**PHP可以这样写,只需要返回一个二维数组就行**
public function tableToExcel(){
$search_key = $this->reques->param('search_key');
$list = Db::name('table_name')->where(['search_key'=>$search_key])->field('search_field')->select();
return $list;
}
参考了好些大佬的博客,这个感觉最简单