如果我们在nodeJS服务器上,我们可以编写一个头,设置一个mime类型,并发送它:
res.header("Content-Disposition", "attachment;filename="+name+".csv");
res.type("text/csv");
res.send(200, csvString);
Run Code Online (Sandbox Code Playgroud)
并且由于标题,浏览器将为命名的csv文件创建下载.
当在浏览器中生成有用的数据时,将其置于CSV文件中的一种解决方案是使用ajax,将其上传到服务器,(可选择将其保存在那里)并让服务器使用这些头将其发送回csv在浏览器下载回来.
但是,我希望100%的浏览器解决方案不涉及与服务器的乒乓.
所以在我看来,可以打开一个新窗口并尝试使用META标记等效设置标题.
但是这在最近的Chrome中对我不起作用.
我确实得到一个新窗口,它包含csvString,但不作为下载.
我想我希望在底部标签中下载或在底部标签中下载一个空白的新窗口.
我想知道元标记是否正确或是否还需要其他标记.
有没有办法让这项工作没有将其强加给服务器?
用于在浏览器中创建CSV的JsFiddle(不工作 - 输出窗口但无法下载)
var A = [['n','sqrt(n)']]; // initialize array of rows with header row as 1st item
for(var j=1;j<10;++j){ A.push([j, Math.sqrt(j)]) }
var csvRows = [];
for(var i=0,l=A.length; i<l; ++i){
csvRows.push(A[i].join(',')); // unquoted CSV row
}
var csvString = csvRows.join("\n");
console.log(csvString);
var csvWin = window.open("","","");
csvWin.document.write('<meta name="content-type" content="text/csv">');
csvWin.document.write('<meta name="content-disposition" content="attachment; filename=data.csv"> ');
csvWin.document.write(csvString);
Run Code Online (Sandbox Code Playgroud) 我对这个问题有类似的问题(Javascript:导出大型文本/ csv文件导致Google Chrome崩溃):
我想节省创建的数据excelbuilder.js的EB.createFile()
功能.如果我将文件数据作为href
链接的属性值,它就可以工作.但是,当数据很大时,它会崩溃Chrome浏览器.代码是这样的:
//generate a temp <a /> tag
var link = document.createElement("a");
link.href = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + encodeURIComponent(data);
link.style = "visibility:hidden";
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
Run Code Online (Sandbox Code Playgroud)
我使用excelbuilder.js创建数据的代码如下:
var artistWorkbook = EB.createWorkbook();
var albumList = artistWorkbook.createWorksheet({name: 'Album List'});
albumList.setData(originalData);
artistWorkbook.addWorksheet(albumList);
var data = EB.createFile(artistWorkbook);
Run Code Online (Sandbox Code Playgroud)
正如类似问题的答案(Javascript:导出大型文本/ csv文件导致Google Chrome崩溃)所示,需要创建一个blob.
我的问题是,文件中保存的内容不是可以由Excel打开的有效Excel文件.我用来保存的代码blob
是这样的:
var blob = new Blob(
[data],
{type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,"}
);
// Programatically create a link and click it:
var a …
Run Code Online (Sandbox Code Playgroud) 我有以下功能使用此我将我的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 …
Run Code Online (Sandbox Code Playgroud)