1.安装xlsx依赖包
npm install xlsjs
2.导入依赖包
import * as XLSX from 'xlsx'
3.导入excel表格
// 读取本地excel文件
function readWorkbookFromLocalFile(file, callback) {
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
// 读取二进制的excel
var workbook = XLSX.read(data, {type: 'binary'});
if(callback) callback(workbook);
};
// 将文件读取为二进制字符串
reader.readAsBinaryString(file);
}
// 读取远程文件
function readWorkbookFromRemoteFile(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function (e) {
if (xhr.status == 200) {
var data = new Uint8Array(xhr.response)
var workbook = XLSX.read(data, { type: 'array' });
if (callback) callback(workbook);
}
};
xhr.send();
}
第二种方法
/**
* xlsx 方式导入
* @param e 所选文件
* @param headerMap [key => value| 中文 => pojo属性]
* @param handleResCallback 处理结果集[验证数据合法性]
* @param errorCallback 处理异常
*/
function importExcel(e, headerMap, handleResCallback, errorCallback){
const { files } = e.target;
if (!files) return;
const file = files[0];
const fileReader = new FileReader();
fileReader.readAsBinaryString(file);
fileReader.onload = event => {
try {
const { result } = event.target;
const wb = XLSX.read(result, { type: 'binary' });
let res = [];
for (const sheet in wb.Sheets) {
if (wb.Sheets.hasOwnProperty(sheet)) {
const data = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
data.forEach(function (item, index) {
for (let key in item) {
if (headerMap.has(key)) {
let columnName = headerMap.get(key);
data[index][columnName] = data[index][key];
delete data[index][key];
}
}
});
res = res.concat(data);
}
}
handleResCallback(res);
} catch (e) {
console.log('文件类型不正确');
errorCallback();
}
};
}