因为自己写的超过1w条会出现下载失败,所以就各种搜资料,然后github搜到一个插件:jsonExportExcel
目前是用mock测试了3w条数据,简直是秒导出(我们系统好像只会保存3w条,所以我只测试3w条就ok了)
动手
引入: 这里引入mock.js是为了等下测试多数据
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/Mock.js/1.0.1-beta3/mock-min.js"></script>
<script src="../js/jsonExportExcel.js"></script>
官网示例
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();
}
mock测试
Mock.mock(
'http://mockjs', {
'tableData|30000':[{
"userName": '@name', //模拟名称
"age|1-100": 100, //模拟年龄(1-100)
"color": "@color", //模拟色值
"date": "@date('yyyy-MM-dd')", //模拟时间
"url": "@url()", //模拟url
}]
}
);
var option={};
option.fileName = 'excel'
option.datas=[
{
sheetData:'',
sheetName:'sheet',
// sheetFilter:['userNam','age','color','date','url'],
sheetHeader:['名字','年龄','颜色','日期','地址'],
}
];
$.ajax({
url: "http://mockjs", //请求的url地址
dataType: "json", //返回格式为json
async: false, //请求是否异步,默认为异步,这也是ajax重要特性
data: {}, //参数值
type: "GET", //请求方式
success:function(res){
console.log(res.tableData);
option.datas[0].sheetData = res.tableData;
// if(res.tableDate == 0) return;
}
});
console.log(option)
var toExcel=new ExportJsonExcel(option);
$(document).ready(function(){
$('#wwo').click(function(){
toExcel.saveExcel();
});
});
效果
看到右边打印说明我mock的3w条数据是ok的,然后点击打印下载的excel文件也包含了3w条数据