本文目錄一覽:
- 1、使用angularJs的ng-csv導出CSV,能不能在導出CSV的時候裏面有多個sheet?
- 2、JS 下載/導出 csv、excel、txt 、img等文件的方法總結
- 3、如何用jquery把文件導出成csv格式文件
使用angularJs的ng-csv導出CSV,能不能在導出CSV的時候裏面有多個sheet?
csv就是個普通的文本文件。不存在多個sheet。所以: 沒辦法導出帶多個sheet的csv文件。 詳見: 【記錄】使用Python讀取/導出(寫入)CSV文件 帶多個sheet的,是excel文件。 用python導出,帶多個的excel,說實話我沒弄過。
JS 下載/導出 csv、excel、txt 、img等文件的方法總結
1. 調用後端接口導出文件
示例下載接口url
1.1 window.open(url)
會打開一個新窗口,開始下載後會自動關閉新窗口。Safair 下載後沒有關閉新窗口。
Chrome、IE、Safair支持,貌似火狐不支持
1.2 window.location=url
在當前窗口下載
Chrome、Safair支持
1.3 iframe
在HTML中,iframe 的屬性用src,但在JS中,只有部份瀏覽器支持修改src(讀是沒問題),真正通用的是要修改對應框架的href值。
1.4 a href=”url” download=”filename”點擊鏈接下載/a
HTML5中給a標籤增加了一個download屬性,只要有這個屬性,點擊這個鏈接時瀏覽器就不在打開鏈接指向的文件,而是改為下載,目前只有chrome、firefox、opera、Edge支持。常用此方法點擊下載圖片。
IE既不支持a標籤的download屬性也不允許js調用a 標籤的click方法。
2. 前端直接導出文件到本地
2.1 將數據轉成DataURI用a標籤下載
a href=”DataURI” download=”filename”點擊鏈接下載/a
Data URI Scheme
Data URI Scheme是指可以在Web 頁面中包含圖片但無需任何額外的HTTP 請求的一類URI。 Data URI Scheme一般用於將經過base64編碼的數據嵌入網頁中,從而減少請求資源的鏈接數。IE8 之前的版本都不支持 data URI scheme。
DataURI的格式:
生成DataURI的方式
1. encodeURIComponent
使用這種方式,當數據過多時,URI長度容易超出瀏覽器限制。 encodeURIComponent常用來轉碼接口參數,為了避免服務器收到不可預知的請求,對任何用戶輸入的作為URI部分的內容都需要用encodeURIComponent進行轉義。
2. URL.createObjectURL
URL.createObjectURL的參數是File對象或者Blob對象
IE10以下不支持URL.createObjectURL
2.2 windows.navigator.msSaveBlob IE10~Edge 專用
msSaveBlob 是IE10~Edge 私有方法。
2.3 execCommand
有的資料有提到IE9可以使用execCommand方法來保存數據到本地文件,但是我自己沒有驗證過,不知道是否可行。而且MDN文檔中execCommand沒有查到SaveAs命令。這塊只是做個小記錄。
js數據直接導出/下載數據到本地到方法總結
本文轉載自:
如何用jquery把文件導出成csv格式文件
兼容性好點就發送內容到服務器,又服務器處理,設置”Content-Disposition”響應頭”attachment;filename=\”xxx.csv\””)
要不就只能IE瀏覽器下的document.execCommand(‘SaveAs’, ‘xxx.csv’);了,兼容性不是很好,而且好像指定的文件名和後綴沒效果。。
div id=”dv”
table
tr
th
tabletrth/thth/thth/th/tr/table
/th
th
tabletrth/thth/thth/th/tr/table
/th
th
tabletrth/thth/thth/th/tr/table
/th
/tr
/table
/div
iframe id=”ifr” style=”position:absolute;left:-999px;top:-999px;” src=”javascript:void(0)”/iframe
script type=”text/javascript”
window.onload = function () {
if (!!document.all) { alert(‘非IE瀏覽器無法直接JS控制保存文件!’); return false; }
var doc = document.getElementById(‘ifr’).contentWindow.document;
doc.open();
doc.write(document.getElementById(‘dv’).innerHTML);
doc.close();
doc.execCommand(‘SaveAs’, ‘xxx.csv’);
}
/script
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/247789.html