1. 程式人生 > >匯出jqgrid表格,csv格式。

匯出jqgrid表格,csv格式。

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++)