1.读取XLSX文件
/**
* 读取xlsx文件 返回文件上传后所在的文件对象
* @param {object}req
* @param {object}res
* @returns {object} return:文件对象
*
*/
function file(req, res) {
// log.ger('info', req);
// log.ger('info', res);
//实例化formidable
var form = new formidable.IncomingForm();
//使上传的文件保持原来的文件的扩展名
form.keepExtensions = true;
//开启该功能,使form.parse()回调函数的files参数是一个file数组
form.multiples = true;
//指定文件上传的路径
form.uploadDir = path.join(appPath + '/', "xlsxFile");
// 异步捕获处理后的文件名
return new Promise((resolve, reject) => {
//转换请求中表单中的数据
form.parse(req, function (err, fields, files) {
if (err) {
//抛出错误
throw new err;
}
log.ger('info', '文件上传后的路径--------------------------------------------:');
log.ger('info', JSON.stringify(files.file.path));
resolve(files.file.path);
})
})
};
2.解析和读取文件对象
/**
* 解析xlsx文件 返回xlsx中的数据
* @param {object} filePath 文件对象
* @returns {object} return 返回文件中所有数据
*
*/
function sheet(filePath) {
log.ger('info', filePath);
let sheets = nodeXlsx.parse(fs.readFileSync(filePath));
log.ger('info', '查看xlsx文件中的数据--------------------------------------------:');
log.ger('info', sheets);//查看文档中的所有内容
return new Promise((resolve, reject) => {
// 遍历 sheet
sheets.forEach(function (Sheet1) {
let obj = {};
let keys = [];
// 遍历xlsx每行内容
for (let rowId in Sheet1['data']) {
let row = Sheet1['data'][rowId];
// log.ger('info', row);
if (rowId == 0) {
row.push('时间戳');//添加时间戳表头
keys = row;
} else {
row.push(fn.timeStamp());//添加时间戳数据
obj[rowId - 1] = {};
for (let i = 0; i < row.length; i++) {
obj[rowId - 1][keys[i]] = row[i];
}
}
}
// log.ger('info', obj);
resolve(obj);
});
})
}