网上找的源码大多可以正常运行,但是一旦数据量大的时候,就会提示下载失败,究其原因,是拼接的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