匯出jqgrid表格,csv格式。
阿新 • • 發佈:2018-12-13
function jqgrid2csv(dom,fileName){ var options={ csvEnclosure:"\"", csvSeparator:",", type : "text/csv;charset=utf-8" } function fake_click(obj) { var ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", true, false, window); obj.dispatchEvent(ev); } function save_local_file(name, data){ var opts={ type:options.type } var url = window.URL || window.webkitURL || window; var file ; try { file = new File([data], name, opts); } catch (e) { file = new Blob([data], opts); } var link = document.createElementNS("http://www.w3.org/1999/xhtml", "a"); link.href = url.createObjectURL(file); link.download = name; fake_click(link); } function escapeRegExp (string) { return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); } function replaceAll (s, find, replace) { return s.replace(new RegExp(escapeRegExp(find), 'g'), replace); } function csvString(csvValue){ var result = replaceAll(csvValue, options.csvEnclosure, options.csvEnclosure + options.csvEnclosure); //if ( result.indexOf(options.csvSeparator) >= 0 || /[\r\n ]/g.test(result) ) result = options.csvEnclosure + result + options.csvEnclosure; return result; } var lines = $(dom).find(".ui-jqgrid-htable tr,.ui-jqgrid-btable tr"); var i; var data=[]; for(i=0;i<lines.length;i++){ if($(lines[i]).hasClass("jqgfirstrow"))continue; var fields = $(lines[i]).find("td"); if(fields.length<1) fields = $(lines[i]).find("th"); var c; var a=[]; for(c=0;c<fields.length;c++){ var v = $(fields[c]).text(); if(v==undefined || v==null)v=''; a.push(csvString(v)); } data.push(a.join(",")+"\r\n"); } var s = data.join(""); save_local_file(fileName,s); }
程式碼為完整js,可直接引用。
此指令碼僅依賴於jquery,無其他依賴。
用法:
1.匯出不含表頭: jqgrid2csv("#grid1_core","filename.csv");
2.匯出包含表頭: 要求第一個引數傳入 表格所在容器的id或者name
jqgrid2csv("#grid1","filename.csv");
jqgrid2csv("[name=grid1]","filename.csv");
csv檔案預設為utf-8編碼,無BOM,可用記事本開啟(推薦Notepad++)