1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > js JSON转Excel并导出

js JSON转Excel并导出

时间:2019-12-17 06:59:14

相关推荐

js JSON转Excel并导出

最近有JSON导出Excel的需求,查看了很多大神的例子。记录一下

参考:/baidu_28665563/article/details/86225970

exportExcel.js代码为:

export const exportExcel = (JSONData, FileName, title, filter) => {if (!JSONData) return;//转化json为objectvar arrData = typeof JSONData != "object" ? JSON.parse(JSONData) : JSONData;var excel = "<table>";//设置表头var row = "<tr>";if (title) { //使用标题项for (var i in title) {if (typeof (title[i]) == 'string') {row += "<th align='center'>" + title[i] + "</th>";}}} else { //不使用标题项for (var i in arrData[0]) {row += "<th align='center'>" + i + "</th>";}}excel += row + "</tr>";//设置数据for (var i = 0; i < arrData.length; i++) {var row = "<tr>";for (var index in arrData[i]) {//判断是否有过滤行if (filter) {if (filter.indexOf(index) == -1) {var value = arrData[i][index] == null ? "" : arrData[i][index];row += "<td>" + value + "</td>";}} else {var value = arrData[i][index] == null ? "" : arrData[i][index];row += "<td align='center' style='width: 90px;'>" + value + "</td>";}}excel += row + "</tr>";}excel += "</table>";var excelFile ="<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='/TR/REC-html40'>";excelFile +='<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';excelFile +='<meta http-equiv="content-type" content="application/vnd.ms-excel';excelFile += '; charset=UTF-8">';excelFile += "<head>";excelFile += "<!--[if gte mso 9]>";excelFile += "<xml>";excelFile += "<x:ExcelWorkbook>";excelFile += "<x:ExcelWorksheets>";excelFile += "<x:ExcelWorksheet>";excelFile += "<x:Name>";excelFile += "{worksheet}";excelFile += "</x:Name>";excelFile += "<x:WorksheetOptions>";excelFile += "<x:DisplayGridlines/>";excelFile += "</x:WorksheetOptions>";excelFile += "</x:ExcelWorksheet>";excelFile += "</x:ExcelWorksheets>";excelFile += "</x:ExcelWorkbook>";excelFile += "</xml>";excelFile += "<![endif]-->";excelFile += "</head>";excelFile += "<body>";excelFile += excel;excelFile += "</body>";excelFile += "</html>";var uri ="data:application/vnd.ms-excel;charset=utf-8," +encodeURIComponent(excelFile);var link = document.createElement("a");link.href = uri;link.style = "visibility:hidden";link.download = FileName + ".xls";document.body.appendChild(link);link.click();document.body.removeChild(link);}

上述代码是略微修改后的代码。修改部分为:

if (title) { //使用标题项for (var i in title) {if (typeof (title[i]) == 'string') {row += "<th align='center'>" + title[i] + "</th>";}}} else { //不使用标题项for (var i in arrData[0]) {row += "<th align='center'>" + i + "</th>";}}

因为如果传入title后,在遍历的时候会多遍历出来三个函数在表头后面。所以加了一个筛选条件。

调用方法:

let title = ['序号', '宿舍楼', '楼层', '宿舍', '姓名', '班级', '人脸信息', '说明'];let fileName = '附录:未' + this.schedulesType + '学生名单';let JSONData = JSON.stringify(this.downloadData)exportExcel(JSONData, fileName, title);

其中title为表格header filename为表格名字 JSONData为表格内数据。 还接受一个参数filter为过滤项。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。