网上找的源码大多可以正常运行,但是一旦数据量大的时候,就会提示下载失败,究其原因,是拼接的json字符串的长度超过了var可定义的长度,此长度或许没有限制,但内存一定有限制
我用网上找的源码只能导出900条,用下面的这个方式可以导出全部2000条,我的数据在2000条以内,所以有需求的同学请自行测试
在github上搜索:jsonExportExcel
官网示例:
window.onload=function () {
var option={};
option.fileName = 'excel'
option.datas=[
{
sheetData:[{one:'一行一列',two:'一行二列'},{one:'二行一列',two:'二行二列'}],
sheetName:'sheet',
//sheetFilter:['two','one'], 可有可无
sheetHeader:['第一列','第二列']
},
/*
{
sheetData:[{one:'一行一列',two:'一行二列'},{one:'二行一列',two:'二行二列'}],
sheetName:'sheet',
//sheetFilter:['two','one'], 可有可无
sheetHeader:['第一列','第二列']
}
*/
];
var toExcel=new ExportJsonExcel(option);
toExcel.saveExcel();
}
我的代码:
$.ajax({
url: 'ajaxstudents_getAllData.php',
dataType: 'text',
success: function(res) {
var option={};
// 时间戳在线转换
// https://tool.lu/timestamp/
option.fileName = "招生信息"+new Date().getTime();
option.datas=[
{
// sheetData:[{one:'一行一列',two:'一行二列'},{one:'二行一列',two:'二行二列'}],
sheetData:JSON.parse(res),
sheetName:'sheet',
// sheetFilter:['two','one'],
sheetHeader:['编号','身份证号','姓名','性别','户籍所在地','是否应届','准考证号','中考成绩','毕业学校','电话','减免学费',
'建档立卡','身高','体重','推荐人','审核','缴费','录取','更新时间','报考专业名称','户籍性质','面试人']
}
];
var toExcel=new ExportJsonExcel(option);
toExcel.saveExcel();
}
});
使用php拼接json字符串
$strjson="[";
$strsql="select * from signup order by id asc";
// die($strsql);
$rst=$pdo->query($strsql);
while($rstInfo=$rst->fetch()){
$strjson.='{';
$strjson.='"编号":'.$rstInfo["id"].',';
$strjson.='"身份证号":"'.$rstInfo["identity"].'",';
$strjson.='"姓名":"'.$rstInfo["realname"].'",';
$strjson.='"性别":"'.($rstInfo["sex"]=='1'?'男':'女').'",';
$strjson.='"户籍所在地":"'.$rstInfo["huji"].'",';
$strjson.='"是否应届":"'.($rstInfo["isywjie"]=='1'?'是':'否').'",';
$strjson.='"准考证号":"'.$rstInfo["zkzh"].'",';
$strjson.='"中考成绩":"'.$rstInfo["zkcj"].'",';
$strjson.='"毕业学校":"'.$rstInfo["school"].'",';
$strjson.='"电话":"'.$rstInfo["phone"].'",';
$strjson.='"减免学费":"'.($rstInfo["isjmxf"]=="1"?"是":"否").'",';
$strjson.='"建档立卡":"'.($rstInfo["isjdlk"]=="1"?"是":"否").'",';
$strjson.='"身高":"'.$rstInfo["shengao"].'",';
$strjson.='"体重":"'.$rstInfo["tizhong"].'",';
$strjson.='"推荐人":"'.$rstInfo["tuijianren"].'",';
$strjson.='"审核":"'.($rstInfo["ispass"]=="1"?"是":"否").'",';
$strjson.='"缴费":"'.($rstInfo["ispay"]=="1"?"是":"否").'",';
$strjson.='"录取":"'.($rstInfo["isenroll"]=="1"?"是":"否").'",';
$strjson.='"更新时间":"'.$rstInfo["updatetime"].'",';
$strjson.='"报考专业名称":"'.$rstInfo["mname"].'",';
$strjson.='"户籍性质":"'.$rstInfo["hname"].'",';
$strjson.='"面试人":"'.$rstInfo["mianshiren"].'"';
$strjson.='}';
$strjson.=',';
}
//去除最后一个逗号
$strjson = substr($strjson,0,strlen($strjson)-1);
$strjson.=']';
echo($strjson);
导出excel文档截图如下:
参考大牛文章: https://blog.csdn.net/jx950915/article/details/80930343?utm_source=blogxgwz5