| Index: util/table2CSV.js
|
| ===================================================================
|
| --- util/table2CSV.js (revision 0)
|
| +++ util/table2CSV.js (revision 0)
|
| @@ -0,0 +1,90 @@
|
| +/*
|
| +This is a small JQuery utility to export HTML table as CSV file.
|
| +
|
| +The author is Kunal Babre and the original script can be found in
|
| +http://www.kunalbabre.com/projects/table2CSV.php. Permissions are
|
| +granted by the author to make changes and redistribute.
|
| +
|
| +Changes made by jning: To avoid exporting the textbox, radio buttons and etc.
|
| +in the table, the parameters rowNum and index in $().find().each() or
|
| +$().filter().find.each() help to ignore non-data cells.
|
| +*/
|
| +
|
| +jQuery.fn.table2CSV = function(rowNum, options) {
|
| + var options = jQuery.extend({
|
| + separator: ',',
|
| + header: [],
|
| + delivery: 'popup' // popup, value
|
| + },
|
| + options);
|
| +
|
| + var csvData = [];
|
| + var headerArr = [];
|
| + var el = this;
|
| +
|
| + //header
|
| + var numCols = options.header.length;
|
| + var tmpRow = []; // construct header avalible array
|
| +
|
| + if (numCols > 0) {
|
| + for (var i = 0; i < numCols; i++) {
|
| + tmpRow[tmpRow.length] = formatData(options.header[i]);
|
| + }
|
| + } else {
|
| + $(el).filter(':visible').find('th').each(function(index) {
|
| + if (index > 0 && $(this).css('display') != 'none')
|
| + tmpRow[tmpRow.length] = formatData($(this).html());
|
| + });
|
| + }
|
| +
|
| + row2CSV(tmpRow);
|
| +
|
| + // actual data
|
| + $(el).find('tr').each(function(index) {
|
| + if (index < rowNum + 1) {
|
| + var tmpRow = [];
|
| + $(this).filter(':visible').find('td').each(function(index) {
|
| + if (index > 0 && $(this).css('display') != 'none')
|
| + tmpRow[tmpRow.length] = formatData($(this).html());
|
| + });
|
| + row2CSV(tmpRow);
|
| + }
|
| + });
|
| + if (options.delivery == 'popup') {
|
| + var mydata = csvData.join('\n');
|
| + return popup(mydata);
|
| + } else {
|
| + var mydata = csvData.join('\n');
|
| + return mydata;
|
| + }
|
| +
|
| + function row2CSV(tmpRow) {
|
| + var tmp = tmpRow.join('') // to remove any blank rows
|
| + // alert(tmp);
|
| + if (tmpRow.length > 0 && tmp != '') {
|
| + var mystr = tmpRow.join(options.separator);
|
| + csvData[csvData.length] = mystr;
|
| + }
|
| + }
|
| + function formatData(input) {
|
| + // replace " with “
|
| + var regexp = new RegExp(/["]/g);
|
| + var output = input.replace(regexp, "“");
|
| + //HTML
|
| + var regexp = new RegExp(/\<[^\<]+\>/g);
|
| + var output = output.replace(regexp, "");
|
| + if (output == "") return '';
|
| + return '"' + output + '"';
|
| + }
|
| + function popup(data) {
|
| + var generator = window.open('', 'csv', 'height=400,width=600');
|
| + generator.document.write('<html><head><title>CSV</title>');
|
| + generator.document.write('</head><body >');
|
| + generator.document.write('<textArea cols=70 rows=15 wrap="off" >');
|
| + generator.document.write(data);
|
| + generator.document.write('</textArea>');
|
| + generator.document.write('</body></html>');
|
| + generator.document.close();
|
| + return true;
|
| + }
|
| +};
|
|
|