【发布时间】:2014-09-20 11:16:52
【问题描述】:
我有大量的表数据(比如 22k 行)。这 22k 行是从 json 文件中填充的。我现在要做的是将这些数据导出到 CSV。
<html>
<head>
<link rel="stylesheet" type="text/css" href="a.css">
</head>
<body>
<div class='mydiv'>
<textarea id="txt" class='txtarea'>
// json datas here.. ( say , 22k rows
</textarea>
<button class='gen_btn'>Generate File</button>
</div>
</body>
</html>
js file :
$(document).ready(function() {
$('button').click(function() {
var data = $('#txt').val();
if (data == '')
return;
JSONToCSVConvertor(data, "Data Excel", true);
});
});
function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) {
var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
var CSV = '';
CSV += ReportTitle + '\r\n\n';
if (ShowLabel) {
var row = "";
for (var index in arrData[0]) {
row += index + ',';
}
row = row.slice(0, -1);
CSV += row + '\r\n';
}
for (var i = 0; i < arrData.length; i++) {
var row = "";
for (var index in arrData[i]) {
row += '"' + arrData[i][index] + '",';
}
row.slice(0, row.length - 1);
CSV += row + '\r\n';
}
if (CSV == '') {
alert("Invalid data");
return;
}
var fileName = "MyReport_";
fileName += ReportTitle.replace(/ /g, "_");
var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);
var link = document.createElement("a");
link.href = uri;
link.style = "visibility:hidden";
link.download = fileName + ".csv";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
如何编写一个 js 文件将所有这 22k 行导出到 excel 而不会导致浏览器崩溃? (它不应该显示杀死页面)。
【问题讨论】:
-
我猜你有一个脚本来处理需要很长时间才能完成的 JSON。如果任何脚本花费的时间过长,浏览器可能会认为它没有响应。要解决此问题,您应该将处理分解为更易于管理的块
-
@nathvarun 我没有找到答案。这就是我问的原因?问题???
-
@jasonscript 如何作为块处理.. ?你能给我看看小提琴吗?
-
好的,看看这个 plunker.plnkr.co/edit/aO2DwSpmZCQ0GHSmPv7m?p=preview 。我正在生成 22000 行 json,然后也将其转换。它似乎没有崩溃。它与您的要求不同,但请看一下。
标签: javascript jquery json csv