Untitled
unknown
javascript
2 years ago
3.2 kB
4
Indexable
function exportTableToCSV($table) { var filename = ''; filename = window.prompt("Podaj nazwę pliku"); if (filename == null) { $(this) .attr({ 'href': '#' }); $(this).removeAttr('download'); return; } filename = filename || "export"; filename = filename.replace('.csv', '') + '.csv'; var $headers = $table.find('tr:has(th)') , $rows = $table.find('tr:has(td)') // Temporary delimiter characters unlikely to be typed by keyboard // This is to avoid accidentally splitting the actual contents , tmpColDelim = String.fromCharCode(11) // vertical tab character , tmpRowDelim = String.fromCharCode(0) // null character // actual delimiter characters for CSV format , colDelim = ';' , rowDelim = '\r\n'; console.log($headers); // Grab text from table into CSV formatted string var csv = ''; csv += formatRows($headers.map(grabRow)); csv += rowDelim; csv += formatRows($rows.map(grabRow)); // Data URI var csvData = 'data:application/csv;charset=utf-8,%ef%bb%bf' + encodeURIComponent(csv); var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); if (navigator.msSaveBlob) { // For IE return navigator.msSaveBlob(blob, filename); } else { $(this) .attr({ 'download': filename , 'href': csvData }); } //------------------------------------------------------------ // Helper Functions //------------------------------------------------------------ // Format the output so it has the appropriate delimiters function formatRows(rows) { return rows.get().join(tmpRowDelim) .split(tmpRowDelim).join(rowDelim) .split(tmpColDelim).join(colDelim); } // Grab and format a row from the table function grabRow(i, row) { var $row = $(row); //for some reason $cols = $row.find('td') || $row.find('th') won't work... var $cols = $row.find('td').not(".ignoreCSV, :has(>div), :has(>input),:contains('Operacje'),:contains('OPERACJE'), :has('.checkbox')"); if (!$cols.length) $cols = $row.find('th').not(".ignoreCSV, :contains('Operacje'),:contains('OPERACJE'),:has('.checkbox')"); return $cols.map(grabCol) .get().join(tmpColDelim); } // Grab and format a column from the table function grabCol(j, col) { var $col = $(col); var $tooltip = $col.find('i'); if ($tooltip.hasClass('btn-Comment') && $tooltip.hasAttr('data-content')) { $text = $tooltip.attr('data-content'); } else { $text = $col.text(); } if ($col.hasClass('csv-map-to-text')) { $text = '"=""' + $col.text() + '"""'; return $text; } $text = $text.trim().replace(/[\r\n]/g, ''); $text = $text.replace(/;/g, ','); return $text.replace(/#|"/g, ''); // remove double quotes } }
Editor is loading...