思路:文件选择 => FileReader对象得到二进制数据 => XLSX处理二进制数据 => 得到数据
-
导入按钮样式与事件
准备一个默认隐藏的 input file框
<input type="file">,点击按钮触发隐藏 input file 的点击选择事件 -
对得到的文件信息进行处理
// change事件
excelFileMethod(e) {
var _this = this
// excel文件信息
const files = e.target.files
console.log(files);
// 构建fileReader对象
const fileReader = new FileReader()
// 读取操作完成时
fileReader.onload = function(e) {
try {
// 二进制数据
console.log(e.target.result)
} catch (e) {
console.log('文件类型不正确')
return
}
}
// 读取指定文件内容
fileReader.readAsBinaryString(files[0])
}
第一步我们需要构建一个新的FileReader对象 第二步使用FileReader.readAsBinaryString()读取指定的Blob中的内容。一旦完成,result属性中将包含所读取文件的原始二进制数据。 第三步就是FileReader.onLoad该事件在读取操作完成时触发。
-
对得到的二进制数据进行处理
首先需要npm下载xlsx,然后导入
import XLSX from 'xlsx'
通过上面的代码我们已经得到了二进制数据了,使用
XLSX.read(data, { type: type})方法来实现对得到的二进制数据进行处理,type主要取值如下:- base64:以base64方式读取
- binary:BinaryString格式( byte n is data.charCodeAt(n) )
- string:UTF8编码的字符串
- buffer:nodejs Buffer
- array:Uint8Array,8位无符号数组
- file:文件的路径(仅nodejs下支持)
这个方法会返回一个workBook对象,解析workBook对象的方法:
- XLSX.utils.sheet_to_csv:生成CSV格式
- XLSX.utils.sheet_to_txt:生成纯文本格式
- XLSX.utils.sheet_to_html:生成HTML格式
- XLSX.utils.sheet_to_json:输出JSON格式