2018-02-27--使用nodejs实现对浏览器上传excel并解析数据的实现并且拼json上

这里最主要的地方就是enctype的参数要改成“multipart/form-data”,另外 input输入框的type类型要改为 file,前端页面的主要配置就是上面代码所示。

在app里面引入模块

var formidable =require('formidable');

var ejsExcel=require('ejsexcel');

var fs=require('fs');

1.先用node有一个上传文件夹uploud,也就是上传了一个execl填好的表

2.解析数据execl数据,拼接成json数据传给后台

3.用request请求后台接口,但是Authorization的凭证在公共方法里面写着所以要用node存到cookieKey,然后取cookieKey

//使用fs将excel文件读取到buffer中

app.use('/import',function(req, res, next) {

var form =new formidable.IncomingForm();

form.keepExtensions =true;

form.uploadDir = __dirname +'/../rlb/upload';

// form.encoding = 'utf-8';

// form.maxFieldsSize = 2 * 1024 * 1024;

    form.parse(req,function (err, fields, files) {

if (err) {

console.log('文件上传错误!');

return;

}

var path = files.import.path;

// var path = files.file.path;

        var arr =path.split('\\');

var name =arr[arr.length -1];

var url ="/upload/" +name;

//对excel文件进行解析读取数据

        var list=[];

var isHouse=true;

var exBuf =fs.readFileSync(__dirname +url);

ejsExcel.getExcelArr(exBuf).then(exlJson => {

//使用getExcelArr函数读取buffer后,得到的是excel工作表文件

            let workBook = exlJson;

//拿到工作表里面的第一个工作簿

            let workSheets =workBook[0];

workSheets.forEach((item, index) => {

console.log(item);

if(index==0){

if(item[0]=='热力卡号'){

isHouse=true;

}else {

isHouse=false;

}

}

if (index!=0&&item.length!=0){

if(isHouse){

list.push({'userCardNumber':item[0],'userName':item[1],'phone':item[2],'companyName':item[3],'stationName':item[4],'villageName':item[5],'buildingNo':item[6],'unit':item[7],'floorNo':item[8],'roomNo':item[9],'useArea':item[10],'startDate':item[11],'netDate':item[12],'hotStatus':item[13],'flowUser':item[14],'meterNo':item[15],'userType':item[16],'historyMoney':item[17]});

}else {

list.push({'villageName':item[0],'pName':item[1],'cName':item[2],'aName':item[3],'address':item[4],'companyName':item[5],'stationName':item[6],'netArea':item[7],'buildingArea':item[8],'useArea':item[9],'lockingArea':item[10],'notArea':item[11],'buildingNo':item[12]});

}

}

});

// console.log(JSON.stringify(list));

            var urlEnd=isHouse==true?'importRoomInfo':'importVillage';

request({

url:'http://180.76.57.168:8767/api/'+urlEnd,

// url: 'http://192.168.1.104:8767/api/'+urlEnd,

                method:"POST",

json:true,

async:false,

headers: {

"content-type":"application/json",

"Authorization":req.cookies.cookieKey,

},

body:list

            },function(error, response, body) {

console.log(body);

if (!error && body.status ==200) {

}

});

res.render('house/houseInfo/house_list');

}).catch(error => {

console.log("************** had error!");

console.log(error);

});

});

});


选择文件


你可能感兴趣的:(2018-02-27--使用nodejs实现对浏览器上传excel并解析数据的实现并且拼json上)