處理
當使用js處理Excel文件時,建議導出爲csv,這樣就能以純文本形式進行處理。
首先使用<input>
與FileReader
將csv文件以文本形式加載到一個字符串變量中。設字符串變量爲tableStr
。
首先要將整個字符串按數據行來分割。由於csv文件每行結尾都帶有換行符\n
,故而可以使用\n
做分隔符:
var rows = tableStr.split(/[\n]/) // 按行分割
對於單行數據,要分割出每一列。csv的格式是使用,
來分隔列:
var cells = rows[0].split(',') // 按列分割
這樣就拿到了本行所有單元格的數據。
導出
當處理完所有csv數據後,要構造一個新的csv字符串出來。已經有每一行的數據,故而只要在每行數據後添加一個\n
然後拼接即可:
var csvString = ''
for (var i = 0; i < rows.length; i++) {
csvString += rows[i] + '\n'
}
導出功能需要藉助<a>
元素。動態創建一個<a>
,將csv文件設置爲其鏈接的跳轉對象,然後觸發其click()
即可:
var download = function(saveName, csvString) {
var link = document.createElement("a")
link.setAttribute("href", "data:text/csv;charset=utf-8,\ufeff" + csvString)
link.setAttribute("download", saveName + ".csv")
link.click()
}
由於動態創建的<a>
沒有append到body中,故而不需要刪除。