处理
当使用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中,故而不需要删除。