日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

js前端导出excel:json形式的导出

發(fā)布時(shí)間:2025/3/20 HTML 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js前端导出excel:json形式的导出 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
第一中形式的導(dǎo)出:主要是表頭對(duì)應(yīng)主體數(shù)據(jù),json形式的導(dǎo)出

js庫(kù)文件名稱 : table2excel.js

這個(gè)js庫(kù)文件是網(wǎng)上找的,并且自己根據(jù)自己業(yè)務(wù)需求把內(nèi)容改了一下
復(fù)制到 table2excel.js 文件中,作為自己的js庫(kù),就可以使用。記得先引入jq的庫(kù)
/*
* jQuery table2excel - v1.1.1* jQuery plugin to export an .xls file in browser from an HTML table* https://github.com/rainabba/jquery-table2excel** Made by rainabba* Under MIT License*/ /** jQuery table2excel - v1.1.1* jQuery plugin to export an .xls file in browser from an HTML table* https://github.com/rainabba/jquery-table2excel** Made by rainabba* Under MIT License* * *把所有的樣式移除了 * 這里是以json的形式來導(dǎo)出excel的*/ //table2excel.js ;(function ( $, window, document, undefined ) {var pluginName = "table2excel",defaults = {filename: "table2excel",//導(dǎo)出excel的名字fileext: ".xls",//導(dǎo)出excel的格式sheetName:"sheet",//sheet的名字// excludeFirst:false,//是否去除第一列,默認(rèn)去不掉//excudeLast:false,//最后一列是否除去dataList:[],//數(shù)據(jù),json數(shù)組 必填dataTitle:{}//表格的頭 必填 };// The actual plugin constructorfunction Plugin ( element, options ) {this.element = element;// jQuery has an extend method which merges the contents of two or// more objects, storing the result in the first object. The first object// is generally empty as we don't want to alter the default options for// future instances of the plugin//extend把后倆個(gè)合并到第一個(gè)中this.settings = $.extend( {}, defaults, options );this._defaults = defaults;this._name = pluginName;this.init();}Plugin.prototype = {init: function () {var e = this;var utf8Heading = "<meta http-equiv=\"content-type\" content=\"application/vnd.ms-excel; charset=UTF-8\">";e.template = {head: "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns=\"http://www.w3.org/TR/REC-html40\">" + utf8Heading + "<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>",sheet: {head: "<x:ExcelWorksheet><x:Name>",tail: "</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"},mid: "</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>",table: {head: "<table>",tail: "</table>"},foot: "</body></html>"};e.tableRows = [];if(e.settings.dataTitle.length < 0 || e.settings.dataTitle == ""){console.log("不可以沒有title");return false;}var tempRowsTitle = "";//標(biāo)題行tempRowsTitle += "<tr>";for(var key in e.settings.dataTitle){tempRowsTitle += "<td>" + e.settings.dataTitle[key] + "</td>";}tempRowsTitle += "</tr>";e.tableRows.push(tempRowsTitle);//循環(huán)數(shù)據(jù)行var listNum = e.settings.dataList.length;var list = e.settings.dataList;for(var i=0; i < Number(listNum); i++ ){var tempRows = "";tempRows += "<tr>";for(var key in e.settings.dataTitle){tempRows += "<td>" + (typeof(list[i][key]) == "undefined" ? "--" : list[i][key] == null ? "--" : list[i][key]) + "</td>";}tempRows += "</tr>";//每行都添加到里邊 e.tableRows.push(tempRows);}e.tableToExcel(e.tableRows, e.settings.name, e.settings.sheetName);},tableToExcel: function (table, name, sheetName) {var e = this, fullTemplate="", i, link, a;e.format = function (s, c) {return s.replace(/{(\w+)}/g, function (m, p) {return c[p];});};sheetName = typeof sheetName === "undefined" ? "Sheet" : sheetName;e.ctx = {// worksheet: name || "Worksheet",//這個(gè)字段無用 table: table,sheetName: sheetName};fullTemplate= e.template.head;if ( $.isArray(table) ) {for (i in table) {//fullTemplate += e.template.sheet.head + "{" + e.ctx.worksheet + i + "}" + e.template.sheet.tail;fullTemplate += e.template.sheet.head + sheetName + i + e.template.sheet.tail;}}fullTemplate += e.template.mid;if ( $.isArray(table) ) {for (i in table) {fullTemplate += e.template.table.head + "{table" + i + "}" + e.template.table.tail;}}fullTemplate += e.template.foot;for (i in table) {e.ctx["table" + i] = table[i];}delete e.ctx.table;var isIE = /*@cc_on!@*/false || !!document.documentMode; // this works with IE10 and IE11 both :) //if (typeof msie !== "undefined" && msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // this works ONLY with IE 11!!!if (isIE) {if (typeof Blob !== "undefined") {//use blobs if we canfullTemplate = e.format(fullTemplate, e.ctx); // with this, works with IEfullTemplate = [fullTemplate];//convert to arrayvar blob1 = new Blob(fullTemplate, { type: "text/html" });window.navigator.msSaveBlob(blob1, getFileName(e.settings) );} else {//otherwise use the iframe and save//requires a blank iframe on page called txtArea1txtArea1.document.open("text/html", "replace");txtArea1.document.write(e.format(fullTemplate, e.ctx));txtArea1.document.close();txtArea1.focus();sa = txtArea1.document.execCommand("SaveAs", true, getFileName(e.settings) );}} else {var blob = new Blob([e.format(fullTemplate, e.ctx)], {type: "application/vnd.ms-excel"});window.URL = window.URL || window.webkitURL;link = window.URL.createObjectURL(blob);a = document.createElement("a");a.download = getFileName(e.settings);a.href = link;document.body.appendChild(a);a.click();document.body.removeChild(a);}return true;}};function getFileName(settings) {return ( settings.filename ? settings.filename : "table2excel" );}// Removes all img tagsfunction exclude_img(string) {var _patt = /(\s+alt\s*=\s*"([^"]*)"|\s+alt\s*=\s*'([^']*)')/i;return string.replace(/<img[^>]*>/gi, function myFunction(x){var res = _patt.exec(x);if (res !== null && res.length >=2) {return res[2];} else {return "";}});}// Removes all link tagsfunction exclude_links(string) {return string.replace(/<a[^>]*>|<\/a>/gi, "");}// Removes input paramsfunction exclude_inputs(string) {var _patt = /(\s+value\s*=\s*"([^"]*)"|\s+value\s*=\s*'([^']*)')/i;return string.replace(/<input[^>]*>|<\/input>/gi, function myFunction(x){var res = _patt.exec(x);if (res !== null && res.length >=2) {return res[2];} else {return "";}});}$.fn[ pluginName ] = function ( options ) {var e = this;e.each(function() {//console.log(options)if ( !$.data( e, "plugin_" + pluginName ) ) {$.data( e, "plugin_" + pluginName, new Plugin( this, options ) );}});// chain jQuery functionsreturn e;};})( jQuery, window, document ); 根據(jù)自己的業(yè)務(wù)寫的一個(gè)調(diào)用上邊庫(kù)的js工具
20181025 這的settings是全局的變量,多個(gè)方法調(diào)用的導(dǎo)出的時(shí)候,會(huì)導(dǎo)致并發(fā)問題
下邊會(huì)加一個(gè)再次修改的

建議:不要使用這個(gè),使用下邊的方法這個(gè)后邊的一個(gè)方法

var
App ={//導(dǎo)出配置的參數(shù) settings : {//頁數(shù)pageInt : 1,//每次限制10條limit : 10,//拿到的數(shù)據(jù)json進(jìn)行封裝到arr數(shù)組中 arr : []},//導(dǎo)出excel時(shí)候,把頁面的數(shù)據(jù)分裝到一個(gè)json數(shù)組中,主要針對(duì)導(dǎo)出數(shù)據(jù)時(shí)候分頁多次查詢,例如吧:每次查詢10條數(shù)據(jù),那么這里會(huì)循環(huán)很多次,每次獲取10條數(shù)據(jù),封裝起來,然后自請(qǐng)求。。。直到把所有的數(shù)據(jù)拿到,然后執(zhí)行導(dǎo)出exportExcel : function (url, excelTitleJson, excelName, data) {if(typeof(data) == "undefined" || data == null){console.log("查詢條件為空");data = JSON.parse("{}");}//默認(rèn)第一頁開始導(dǎo)出data["page"] = App.settings.pageInt;$.getJSON(url, data, function(json){if(json.data.length <= 0){//沒有查到數(shù)據(jù),不導(dǎo)出if(App.settings.arr.length > 0){//table.exportFile([],App.settings.arr , 'xls'); //默認(rèn)導(dǎo)出 csv,也可以為:xls//這里隨意找個(gè)類就可以,暫時(shí)不會(huì)改,但是這樣是可以使用的$(".layui-table-box").table2excel({//exclude: ".noExl",filename: excelName + new Date().toISOString().replace(/[\-\:\.]/g, ""),fileext: ".xls",sheetName: "sheet",// excludeFirst:true,// excudeLast:true,dataList:App.settings.arr,//這個(gè)是后臺(tái)獲取到的數(shù)據(jù),針對(duì)對(duì)此分頁獲取數(shù)據(jù)dataTitle:excelTitleJson});//導(dǎo)出后這個(gè)頁數(shù),初始化page:App.settings.pageInt = 1;}}else{for(var i = 0;i<json.data.length;i++){App.settings.arr.push(json.data[i]);}App.settings.pageInt++;data["page"] = App.settings.pageInt;//有數(shù)據(jù),就再次執(zhí)行拿數(shù)據(jù) App.exportExcel(url, excelTitleJson, excelName, data);}});} }

?

調(diào)整后的代碼,把并發(fā)的問題修改了。師兄幫助修改的。自己是沒有發(fā)現(xiàn)的

var
App ={//導(dǎo)出excel時(shí)候,把頁面的數(shù)據(jù)分裝到一個(gè)json數(shù)組中,然后使用layui的導(dǎo)出方法導(dǎo)出數(shù)據(jù)exportExcel : function (url, excelTitleJson, excelName, data, settings) {if(typeof(data) == "undefined" || data == null){console.log("查詢條件為空");data = JSON.parse("{}");}if(! settings){settings = {//頁數(shù)pageInt : 1,//每次限制10條limit : 10,//拿到的數(shù)據(jù)json進(jìn)行封裝到arr數(shù)組中 arr : []}}data["page"] = settings.pageInt;$.getJSON(url, data, function(json){if(json.data.length <= 0){//沒有查到數(shù)據(jù),不導(dǎo)出if(settings.arr.length > 0){//table.exportFile([],settings.arr , 'xls'); //默認(rèn)導(dǎo)出 csv,也可以為:xls $(".layui-table-box").table2excel({//exclude: ".noExl",filename: excelName + new Date().toISOString().replace(/[\-\:\.]/g, ""),fileext: ".xls",sheetName: "sheet",excludeFirst:true,excudeLast:true,dataList:settings.arr,dataTitle:excelTitleJson});//導(dǎo)出后這個(gè)頁數(shù),初始化page:settings.pageInt = 1;}}else{for(var i = 0;i<json.data.length;i++){settings.arr.push(json.data[i]);}settings.pageInt++;data["page"] = settings.pageInt;//有數(shù)據(jù),就再次執(zhí)行拿數(shù)據(jù),回調(diào) App.exportExcel(url, excelTitleJson, excelName, data, settings);}});} }

?

?

?

最后就是使用了

?

App.exportExcel("/YunApps/com_momathink_crm_zkhq/customer/myCustomerList",
{"followStatus":"狀態(tài)"}, //這里需要填寫的是excel導(dǎo)出后的表頭,key就是數(shù)據(jù)庫(kù)查詢出的json數(shù)據(jù)的每條數(shù)據(jù)的key,value就是表頭,每個(gè)表頭會(huì)對(duì)應(yīng)上它的值
"客戶信息",//導(dǎo)出excel的名字
{}//最后一個(gè)參數(shù)可填可不填 );

?

轉(zhuǎn)載于:https://www.cnblogs.com/renjianjun/p/9845733.html

總結(jié)

以上是生活随笔為你收集整理的js前端导出excel:json形式的导出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美综合视频 | 四虎影视免费在线观看 | 中文字幕无人区二 | 黄色无遮挡网站 | 美女视频黄色免费 | 日本不卡视频在线 | 成年人激情视频 | 亚洲综合在线成人 | 日韩亚洲在线 | 国产成人高清视频 | av自拍偷拍 | 四虎国产| 亚洲成人精品在线播放 | 国产日韩一区二区 | 天堂在线中文网 | 久久中文字幕视频 | 最近国语视频在线观看免费播放 | 性感美女高潮 | 视频1区 | 久久久久人妻一区二区三区 | a级黄色小视频 | 日本激情网 | 二级毛片视频 | 欧美日韩成人一区二区 | 91精品人妻一区二区三区四区 | 高潮毛片无遮挡高清免费 | 在线视频黄 | 国产av一区二区三区 | 日本精品在线一区 | 久久盗摄 | 变态另类一区 | 中年夫妇啪啪高潮 | 成人欧美性 | 66精品| 91久久伊人| 国产成人午夜高潮毛片 | 国产50页| 亚洲少妇色 | 久久综合av | av在线专区| 少妇aa| 国产高清免费av | 一卡二卡在线 | 天天做天天躁天天躁 | 国产又大又长又粗 | 91视频地址 | www.色亚洲 | 午夜激情亚洲 | 一区二区三区影院 | 尤物在线免费视频 | 大尺度一区二区 | 日本一级片免费看 | 成人免费一区 | 亚洲无人区小视频 | 国产精品麻豆成人av电影艾秋 | 免费观看高清在线 | 国产男女猛烈无遮挡免费视频 | 日本猛少妇色xxxxx | 亚州a级片 | 久久夜色av | 6080毛片 | 福利所导航 | 久久亚洲伊人 | 国产精品刘玥久久一区 | 我们俩电影网mp4动漫官网 | 熟女视频一区二区三区 | 欧美日韩亚洲国产另类 | 亚洲天堂偷拍 | 国产又粗又猛又爽 | 亚洲精品高潮 | 日本中文有码 | 日本网站在线免费观看 | 日韩一级片免费在线观看 | 亚洲成人精品久久 | 亚洲国产精品18久久久久久 | 四虎影像| 色哟哟视频网站 | 国产中文视频 | 日韩在线视屏 | 免费久久视频 | 在线看的av网站 | 国产熟女一区二区三区五月婷 | 黄色视屏在线 | 亚洲自拍偷拍第一页 | 男人天堂免费视频 | 成人福利视频导航 | 欧美一区二区三区四区视频 | 亚洲欧美制服丝袜 | 久久人体 | 成人免费午夜视频 | 欧美自拍区| 在线免费观看 | 黑人巨大猛交丰满少妇 | 免费黄色av | 国产一区二区三区四区三区四 | 性色av网址 | 久久国内精品视频 | 婷婷亚洲精品 | 日韩av高清在线观看 |