csv datatable 乱码 导出_JS将Datatable表格数据导出为CSV文件

需求:将web页面datatable导出成Excel表格,要求为CSV格式文件

导出按钮点击事件如下:

/**

* 导出csv按钮点击事件

* @param current

* @returns

*/

function exportCsv(current){

// 获取表格数据

var data = JSON.stringify(table.rows().data());//table 为datatable实例

var date = new Date();

var timename = date.format("YYYY-MM-DD hh:mm:ss");//当前时间

if (data == '')

return;

outCsv(data, "导出表格"+timename, true);

}

/**

* 导出CSV方法

* @param JSONData json数据

* @param ReportTitle 导出的表格标题

* @param ShowLabel 是否显示字段名

* @returns

*/

function outCsv(JSONData, ReportTitle, ShowLabel) {

var CSV = '';

//如果JSONData不是一个对象然后JSON.parse将解析对象中的JSON字符串

var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;

$.each(arrData,function(i,e){

e.time=new Date(e.time).format("YYYY-MM-DD hh:mm:ss");//时间格式化

})

if (ShowLabel) {

var row = "";

var $trs = $("#tableObj").find("tr");//#tableObj 为datatable的id

var $tds = $trs.eq(0).find("th");

//这个循环将从数组的第一个索引中提取标签。

for (var j = 0; j < $tds.length; j++) {

row += $tds.eq(j).text() + ",";

}

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]) {

if (arrData[i][index] instanceof Date) {

row += '"' + arrData[i][index].toLocaleString() + '",';

}else{

row += '"' + arrData[i][index] + '",';

}

}

row.slice(0, row.length - 1);

CSV += row + '\r\n';

}

if (CSV == '') {

alert("Invalid data");

return;

}

// 定义一个文件名一个文件名

var fileName = "";

fileName += ReportTitle.replace(/ /g, "_");

// if browser is IE

if (window.navigator.msSaveOrOpenBlob) {

var csvContent = "\ufeff";

var uriie = csvContent + CSV;

var blob = new Blob([decodeURIComponent(encodeURI(uriie))], {

type: "data:text/csv;charset=utf-8,"

});

navigator.msSaveBlob(blob, fileName + '.csv');

} else {

var csvContent = "data:text/csv;charset=utf-8,\ufeff";

var uriother = csvContent + CSV;

// 第一种实现

var encodedUri = encodeURI(uriother);

var link = document.createElement("a");

link.setAttribute("href", encodedUri);

link.setAttribute("download", fileName + ".csv");

document.body.appendChild(link);

link.click();

}

}

标签:JSONData,JS,var,CSV,data,Datatable,arrData,row

来源: https://blog.csdn.net/MTonj/article/details/88094698

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值