1 | jQuery.fn.table2CSV = function(options) {
|
---|
2 | var options = jQuery.extend({
|
---|
3 | separator: ',',
|
---|
4 | header: [],
|
---|
5 | delivery: 'popup' // popup, value
|
---|
6 | },
|
---|
7 | options);
|
---|
8 |
|
---|
9 | var csvData = [];
|
---|
10 | var headerArr = [];
|
---|
11 | var el = this;
|
---|
12 |
|
---|
13 | //header
|
---|
14 | var numCols = options.header.length;
|
---|
15 | var tmpRow = []; // construct header avalible array
|
---|
16 |
|
---|
17 | if (numCols > 0) {
|
---|
18 | for (var i = 0; i < numCols; i++) {
|
---|
19 | tmpRow[tmpRow.length] = formatData(options.header[i]);
|
---|
20 | }
|
---|
21 | } else {
|
---|
22 | $(el).filter(':visible').find('th').each(function() {
|
---|
23 | if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).text());
|
---|
24 | });
|
---|
25 | }
|
---|
26 |
|
---|
27 | row2CSV(tmpRow);
|
---|
28 |
|
---|
29 | // actual data
|
---|
30 | $(el).find('tr').each(function() {
|
---|
31 | var tmpRow = [];
|
---|
32 | $(this).filter(':visible').find('td').each(function() {
|
---|
33 | if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).text());
|
---|
34 | });
|
---|
35 | row2CSV(tmpRow);
|
---|
36 | });
|
---|
37 | if (options.delivery == 'popup') {
|
---|
38 | var mydata = csvData.join('\n');
|
---|
39 | return popup(mydata);
|
---|
40 | } else {
|
---|
41 | var mydata = csvData.join('\n');
|
---|
42 | return mydata;
|
---|
43 | }
|
---|
44 |
|
---|
45 | function row2CSV(tmpRow) {
|
---|
46 | var tmp = tmpRow.join('') // to remove any blank rows
|
---|
47 | // alert(tmp);
|
---|
48 | if (tmpRow.length > 0 && tmp != '') {
|
---|
49 | var mystr = tmpRow.join(options.separator);
|
---|
50 | csvData[csvData.length] = mystr;
|
---|
51 | }
|
---|
52 | }
|
---|
53 | function formatData(input) {
|
---|
54 | // replace " with â
|
---|
55 | var regexp = new RegExp(/["]/g);
|
---|
56 | var output = input.replace(regexp, "â");
|
---|
57 | //Remove trailing whitespace
|
---|
58 | var regexp = new RegExp(/\s+$/);
|
---|
59 | var output = output.replace(regexp, "");
|
---|
60 | //HTML
|
---|
61 | var regexp = new RegExp(/\<[^\<]+\>/g);
|
---|
62 | var output = output.replace(regexp, "");
|
---|
63 | if (output == "")
|
---|
64 | return '';
|
---|
65 | return '"' + output + '"';
|
---|
66 | }
|
---|
67 | function popup(data) {
|
---|
68 | var generator = window.open('', 'csv', 'height=400,width=600');
|
---|
69 | generator.document.write('<html><head><title>CSV</title>');
|
---|
70 | generator.document.write('</head><body >');
|
---|
71 | generator.document.write('<textArea cols=70 rows=15 wrap="off" >');
|
---|
72 | generator.document.write(data);
|
---|
73 | generator.document.write('</textArea>');
|
---|
74 | generator.document.write('</body></html>');
|
---|
75 | generator.document.close();
|
---|
76 | return true;
|
---|
77 | }
|
---|
78 | };
|
---|