01
2019
04

json导出excel

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

image.png

参考大牛文章: https://blog.csdn.net/jx950915/article/details/80930343?utm_source=blogxgwz5

打赏
« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。