將javascript數(shù)據(jù)導出到CSV文件,無需服務(wù)器交互如果我們在nodeJS服務(wù)器上,我們可以編寫一個頭,設(shè)置一個mime類型,并發(fā)送它:res.header("Content-Disposition", "attachment;filename="+name+".csv"); res.type("text/csv");res.send(200, csvString);并且由于標題,瀏覽器將為命名的csv文件創(chuàng)建下載。當在瀏覽器中生成有用的數(shù)據(jù)時,將其置于CSV文件中的一種解決方案是使用ajax,將其上傳到服務(wù)器,(可選擇將其保存在那里)并讓服務(wù)器使用這些頭將其發(fā)送回csv在瀏覽器下載回來。但是,我希望100%的瀏覽器解決方案不涉及與服務(wù)器的乒乓。所以在我看來,可以打開一個新窗口并嘗試使用META標記等效設(shè)置標題。但是這在最近的Chrome中對我不起作用。我確實得到一個新窗口,它包含csvString,但不作為下載。我想我希望在底部標簽中下載或在底部標簽中下載一個空白的新窗口。我想知道元標記是否正確或是否還需要其他標記。有沒有辦法讓這項工作沒有將其強加給服務(wù)器?用于在瀏覽器中創(chuàng)建CSV的JsFiddle(不工作 - 輸出窗口但無法下載)var A = [['n','sqrt(n)']]; // initialize array of rows with header row as 1st itemfor(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);
將javascript數(shù)據(jù)導出到CSV文件,無需服務(wù)器交互
胡子哥哥
2019-08-16 14:52:05