|
1 | 1 | /*! |
2 | | - * TableExport.js v3.1.2 (http://www.clarketravis.com) |
| 2 | + * TableExport.js v3.1.3 (http://www.clarketravis.com) |
3 | 3 | * Copyright 2015 Travis Clarke |
4 | 4 | * Licensed under the MIT license |
5 | 5 | */ |
|
31 | 31 | exporters = { |
32 | 32 | xlsx: function (rDel, name) { |
33 | 33 | var dataURL = $rows.map(function (i, val) { |
34 | | - var $cols = $(val).find('th, td'); |
35 | | - return $cols.map(function (i, val) { |
36 | | - return $(val).text() |
37 | | - }); |
38 | | - }).get(), |
39 | | - dataObject = JSON.stringify({ |
| 34 | + var $cols = $(val).find('th, td'); |
| 35 | + return [$cols.map(function (i, val) { |
| 36 | + return $(val).text(); |
| 37 | + }).get()]; |
| 38 | + }).get(), |
| 39 | + dataObject = escapeHtml( |
| 40 | + JSON.stringify({ |
40 | 41 | data: dataURL, |
41 | 42 | name: name |
42 | | - }).replace(/'/g, "'"), |
| 43 | + })), |
43 | 44 | myFile = name + ".xlsx", |
44 | 45 | myContent = $.fn.tableExport.xlsx.buttonContent, |
45 | 46 | myClass = $.fn.tableExport.xlsx.defaultClass; |
46 | 47 | createObjButton(dataObject, myFile, myContent, myClass); |
47 | 48 | }, |
48 | 49 | xls: function (rdel, name) { |
49 | 50 | var colD = $.fn.tableExport.xls.separator, |
50 | | - dataURL = 'data:application/vnd.ms-excel;charset=utf-16,' + |
| 51 | + dataURL = 'data:application/vnd.ms-excel;charset=utf-8,' + |
51 | 52 | encodeURIComponent($rows.map(function (i, val) { |
52 | 53 | var $cols = $(val).find('th, td'); |
53 | 54 | return $cols.map(function (i, val) { |
54 | | - return $(val).html() |
| 55 | + return $(val).text(); |
55 | 56 | }).get().join(colD); |
56 | 57 | }).get().join(rdel)), |
57 | 58 | myFile = name + ".xls", |
|
62 | 63 | csv: function (rdel, name) { |
63 | 64 | rdel = '"' + rdel + '"'; |
64 | 65 | var colD = '"' + $.fn.tableExport.csv.separator + '"', |
65 | | - dataURL = 'data:text/csv;charset=utf-16,' + |
| 66 | + dataURL = 'data:text/csv;charset=utf-8,' + |
66 | 67 | encodeURIComponent('"' + $rows.map(function (i, val) { |
67 | 68 | var $cols = $(val).find('th, td'); |
68 | 69 | return $cols.map(function (i, val) { |
69 | | - return $(val).text().replace(/"/g, '""') |
| 70 | + return $(val).text().replace(/"/g, '""'); |
70 | 71 | }).get().join(colD); |
71 | 72 | }).get().join(rdel) + '"'), |
72 | 73 | myFile = name + ".csv", |
|
76 | 77 | }, |
77 | 78 | txt: function (rdel, name) { |
78 | 79 | var colD = $.fn.tableExport.txt.separator, |
79 | | - dataURL = 'data:text/plain;charset=utf-16,' + |
| 80 | + dataURL = 'data:text/plain;charset=utf-8,' + |
80 | 81 | encodeURIComponent($rows.map(function (i, val) { |
81 | 82 | var $cols = $(val).find('th, td'); |
82 | 83 | return $cols.map(function (i, val) { |
83 | | - return $(val).text() |
| 84 | + return $(val).text(); |
84 | 85 | }).get().join(colD); |
85 | 86 | }).get().join(rdel)), |
86 | 87 | myFile = name + ".txt", |
|
168 | 169 |
|
169 | 170 | $.fn.tableExport.rowDel = "\r\n"; |
170 | 171 |
|
| 172 | + $.fn.tableExport.entityMap = {"&": "&", "<": "<", ">": ">", "'": ''', "/": '/'}; |
| 173 | + |
| 174 | + function escapeHtml(string) { |
| 175 | + return String(string).replace(/[&<>'\/]/g, function (s) { |
| 176 | + return $.fn.tableExport.entityMap[s]; |
| 177 | + }); |
| 178 | + } |
| 179 | + |
171 | 180 | function dateNum(v, date1904) { |
172 | 181 | if (date1904) v += 1462; |
173 | 182 | var epoch = Date.parse(v); |
|
0 commit comments