1/* 2This is a small JQuery utility to export HTML table as CSV file. 3 4The author is Kunal Babre and the original script can be found in 5http://www.kunalbabre.com/projects/table2CSV.php. Permissions are 6granted by the author to make changes and redistribute. 7 8Changes made by jning: To avoid exporting the textbox, radio buttons and etc. 9in the table, the parameters rowNum and index in $().find().each() or 10$().filter().find.each() help to ignore non-data cells. 11*/ 12 13jQuery.fn.table2CSV = function(rowNum, options) { 14 var options = jQuery.extend({ 15 separator: ',', 16 header: [], 17 delivery: 'popup' // popup, value 18 }, 19 options); 20 21 var csvData = []; 22 var headerArr = []; 23 var el = this; 24 25 //header 26 var numCols = options.header.length; 27 var tmpRow = []; // construct header avalible array 28 29 if (numCols > 0) { 30 for (var i = 0; i < numCols; i++) { 31 tmpRow[tmpRow.length] = formatData(options.header[i]); 32 } 33 } else { 34 $(el).filter(':visible').find('th').each(function(index) { 35 if (index > 0 && $(this).css('display') != 'none') 36 tmpRow[tmpRow.length] = formatData($(this).html()); 37 }); 38 } 39 40 row2CSV(tmpRow); 41 42 // actual data 43 $(el).find('tr').each(function(index) { 44 if (index < rowNum + 1) { 45 var tmpRow = []; 46 $(this).filter(':visible').find('td').each(function(index) { 47 if (index > 0 && $(this).css('display') != 'none') 48 tmpRow[tmpRow.length] = formatData($(this).html()); 49 }); 50 row2CSV(tmpRow); 51 } 52 }); 53 if (options.delivery == 'popup') { 54 var mydata = csvData.join('\n'); 55 return popup(mydata); 56 } else { 57 var mydata = csvData.join('\n'); 58 return mydata; 59 } 60 61 function row2CSV(tmpRow) { 62 var tmp = tmpRow.join('') // to remove any blank rows 63 // alert(tmp); 64 if (tmpRow.length > 0 && tmp != '') { 65 var mystr = tmpRow.join(options.separator); 66 csvData[csvData.length] = mystr; 67 } 68 } 69 function formatData(input) { 70 // replace " with â 71 var regexp = new RegExp(/["]/g); 72 var output = input.replace(regexp, "â"); 73 //HTML 74 var regexp = new RegExp(/\<[^\<]+\>/g); 75 var output = output.replace(regexp, ""); 76 if (output == "") return ''; 77 return '"' + output + '"'; 78 } 79 function popup(data) { 80 var generator = window.open('', 'csv', 'height=400,width=600'); 81 generator.document.write('<html><head><title>CSV</title>'); 82 generator.document.write('</head><body >'); 83 generator.document.write('<textArea cols=70 rows=15 wrap="off" >'); 84 generator.document.write(data); 85 generator.document.write('</textArea>'); 86 generator.document.write('</body></html>'); 87 generator.document.close(); 88 return true; 89 } 90}; 91