在谷歌浏览器浏览器中将HTML表格导出到csv
我有以下function使用此我将我的html导出到Csv文件。 几天/几个月前它在谷歌浏览器浏览器中运行良好(仍然在FF中工作正常) 。 现在突然它停止工作将数据转换为csv格式。
当我点击导出按钮我能够下载文件,但当我试图在ms excel /自由办公室开放时,它没有打开它。
我甚至可以看到导出的数据,但它显示相同,分开。
任何人都可以建议我在谷歌浏览器浏览器中的代码出错。
function exportReportTableToCSV($table, filename) { var dumpd=''; var csvData =''; $table.each(function(){ var $rows = $(this).find('tr:has(td)'); var $header = $(this).find('tr:has(th)'); tmpColDelim = String.fromCharCode(11), // vertical tab character tmpRowDelim = String.fromCharCode(0), // null character colDelim = '","', rowDelim = '"\r\n"', csv = '"' + $header.map(function (i, head) { var $head = $(head), $cols = $head.find('th'); return $cols.map(function (j, col) { var $col = $(col), text = $col.text(); if(text == " ") text = ""; if(text == "PROGRAMS") text = ""; console.log(text); return text.replace('"', '""'); }).get().join(tmpColDelim); }).get().join(tmpRowDelim) .split(tmpRowDelim).join(rowDelim) .split(tmpColDelim).join(colDelim) + '"' ; csv+='\r\n'; csv+= '"' + $rows.map(function (i, row) { var $row = $(row), $cols = $row.find('td'); return $cols.map(function (j, col) { var $col = $(col); var text; if($($(col)).find("input:checkbox").length > 0) text = $($(col)).find("input:checkbox").prop('checked') ? 'Yes' : 'No'; else text = $col.text(); if(text === "") { text = ""; } return text.replace('"', '""'); }).get().join(tmpColDelim); }).get().join(tmpRowDelim) .split(tmpRowDelim).join(rowDelim) .split(tmpColDelim).join(colDelim) + '"'; dumpd+=csv+"\n\n"; }); csvData ='data:application/csv;charset=utf-8,' + encodeURIComponent(dumpd); $(this) .attr({ 'download': filename, 'href': csvData, 'target': '_blank' }); }
在做了一些研究后,我得到了解决方案。
我改变了这个
var csvData ='data:application/csv;charset=utf-8,' + encodeURIComponent(dumpd); $(this) .attr({ 'download': filename, 'href': csvData, 'target': '_blank' });
至
var csvData = new Blob([dumpd], { type: 'text/csv' }); //new way var csvUrl = URL.createObjectURL(csvData); $(this) .attr({ 'download': filename, 'href': csvUrl });
它工作得很好。 看来chrome在新版本中已经改变了一些东西。
希望它可以帮助别人。