Javascript 如何跳过第一行并添加标题以下载csv文件
这是我的代码:Javascript 如何跳过第一行并添加标题以下载csv文件,javascript,Javascript,这是我的代码: <script type="text/javascript"> functionExport(json_data, "User_Report", true); function functionExport(JSONData, ReportTitle, ShowLabel) { var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
<script type="text/javascript">
functionExport(json_data, "User_Report", true);
function functionExport(JSONData, ReportTitle, ShowLabel) {
var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
var CSV = '';
if (ShowLabel) {
var row = "";
for (var index in arrData[0]) {
row += index.toUpperCase() + ',';
}
row = row.slice(0, -1);
CSV += row + '\r\n';
}
//1st loop is to extract each row
for (var i = 0; i < arrData.length; i++) {
var row = "";
for (var index in arrData[i]) {
row += '"' + $('<div>').html(arrData[i][index]).text() + '",';
}
row.slice(0, row.length - 1);
CSV += row + '\r\n';
}
if (CSV == '') {
alert("Invalid data");
return;
}
//Generate a file name
var fileName = "Manage_";
fileName += ReportTitle.replace(/ /g, "_");
var link = document.createElement("a");
link.href = uri;
//set the visibility hidden so it will not effect on your web-layout
link.style = "visibility:hidden";
link.download = fileName + ".csv";
//this part will append the anchor tag and remove it after automatic click
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
</script>
functionExport(json_数据,“用户_报告”,true);
功能导出(JSONData、ReportTitle、ShowLabel){
var arrData=typeof JSONData!=“object”?JSON.parse(JSONData):JSONData;
var CSV=“”;
如果(显示标签){
var行=”;
对于(arrData[0]中的var索引){
行+=index.toUpperCase()+',';
}
row=row.slice(0,-1);
CSV+=行+'\r\n';
}
//第一个循环是提取每一行
对于(变量i=0;i
您是否尝试将第一个循环中的i初始化为1?
另外,jQuery选择器应该是$('div')
for(变量i=1;i
您是否尝试将第一个循环中的i初始化为1?
另外,jQuery选择器应该是$('div')
for(变量i=1;i
我的建议是,不要重新发明轮子。CSV有很多gotcha。只要使用一个已经存在的库,就可以了
下面是获取JSON对象并将其转换为CSV的函数:
如果要跳过第一行,只需将arrData.slice(1)
传递给它,而不是arrData
如果你想添加你自己的头,这就是第三个函数签名的作用。。。像这样:
Papa.unparse({fields:['a','b','c',data:arrData})
我的建议是,不要重新发明轮子。CSV有很多gotcha。只要使用一个已经存在的库,就可以了
下面是获取JSON对象并将其转换为CSV的函数:
如果要跳过第一行,只需将arrData.slice(1)
传递给它,而不是arrData
如果你想添加你自己的头,这就是第三个函数签名的作用。。。像这样:
Papa.unparse({fields:['a','b','c',data:arrData})
我不明白你说的话。。。我想在下载csv文件的第一行添加标题(管理用户),然后我想在下一行显示数据您知道如何加载外部库吗?如果加载它,此语句将生成一个csv,跳过第一行,并带有自定义标题:csv=Papa.unpasse({fields:['a'、'b'、'c'],data:arrData.slice(1)})
甚至。。。csv=“Some string\n”+Papa.unpasse(arrData.slice(1))位于设置arrData的字符串之后。虽然看起来你并没有在alli的代码末尾使用csv字符串,但我不明白你的意思。。。我想在下载csv文件的第一行添加标题(管理用户),然后我想在下一行显示数据您知道如何加载外部库吗?如果加载它,此语句将生成一个csv,跳过第一行,并带有自定义标题:csv=Papa.unpasse({fields:['a'、'b'、'c'],data:arrData.slice(1)})
甚至。。。csv=“Some string\n”+Papa.unpasse(arrData.slice(1))位于设置arrData的字符串之后。虽然看起来您根本没有在代码的末尾使用csv字符串……但这是带有更改的代码:i=1和$('div')…这是带有更改的代码:i=1和$('div')如何跳过第一行并添加(pass)标题下载csv文件如何跳过第一行并添加(pass)标题下载csv文件
for (var i = 1; i < arrData.length; i++) {
var row = "";
for (var index in arrData[i]) {
row += '"' + $('<div>').html(arrData[i][index]).text() + '",';
}
row.slice(0, row.length - 1);
CSV += row + '\r\n';
}