利用 encodeURIComponent
將字串轉為 Data URI
但要注意轉出的 code 為 UTF-8 編碼
若直接用 Microsoft Office Excel 開啟 csv 檔案時
中文會變成亂碼
因為 Excel 無法預設讀取 UTF-8 編碼的 CSV 檔案
所以利用增加 UTF-8 BOM 的方式
讓 Excel 直接開啟 csv 不會出現亂碼
navigator.appVersion.indexOf("Win") 若回傳值不為 -1
表示 OS 為 Windows 系列
指定 charset 為 帶 BOM 的 UTF-8
傳入的參數 _csvString
除了每列資料要加斷行符號
不同欄位之間的資料要加逗號之外
還要額外處理兩個地方
1.資料若含有特殊符號,例如逗號,資料需加上雙引號
2.資料內容若已有雙引號,建議用 replace 取代為兩個雙引號
這樣用 Excel 開啟時,瀏覽效果較佳
function exportToCSV( _csvString ) { var downloadLink = document.createElement("a"); downloadLink.download = "dataTable.csv"; downloadLink.innerHTML = "Download File"; if (window.webkitURL != null) { var code = encodeURIComponent( _csvString ); if ( navigator.appVersion.indexOf("Win")==-1 ) { downloadLink.href = "data:application/csv;charset=utf-8," + code; } else { downloadLink.href = "data:application/csv;charset=utf-8,%EF%BB%BF" + code; } } downloadLink.click(); }
沒有留言:
張貼留言