应运场景:
1、前端获取到excel表格里面的数据;
2、传给后台;
3、 后台进过一系列数据处理之后;
4、 返回数据, 展示在前端页面。
最关键的点就是, 获取到, excel 里面的数据。
1、J文件需要引入:
<script src = "js/xlsx.core.min.js"></script>
2、输入框标签:
<span class = "selectFile">点击选区Excel文件</span>
<input id="excel-file" type="file" accept=".csv, application/vnd.openxmlformats- officedocument.spreadsheetml.sheet, application/vnd.ms-excel"/>
accept后面的一长串的内容就是:只显示.xlsx后缀的文件。
3、JS代码。
/* 提取 excel 里的数据*/
//使用XLSX.utils.sheet_to_json方法解析表格对象返回相应的JSON数据
$('#excel-file').change(function(e) {
var files = e.target.files;
console.log(files[0].name);
$('.selectFile').text(files[0].name);
var fileReader = new FileReader();
fileReader.onload = function(ev) {
try {
var data = ev.target.result,
workbook = XLSX.read(data, {
type: 'binary'
}), // 以二进制流方式读取得到整份excel表格对象
persons = []; // 存储获取到的数据
} catch (e) {
console.log('文件类型不正确');
return;
}
// 表格的表格范围,可用于判断表头是否数量是否正确
var fromTo = '';
// 遍历每张表读取
for (var sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
console.log(fromTo);
persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
// break; // 如果只取第一张表,就取消注释这行
}
}
//这里打印excel表里面的内容, 可以用汉字, 结果也没有错误
console.log(persons);
console.log(persons.length);
console.log(persons[0].月份);
console.log(persons[0].政策风险);
console.log(persons[0].市场经济风险);
console.log(persons[0].市场供求风险);
console.log(persons[0].成本风险);
var riskArr = [];
var risk = 0;
var currentPriceArr = [];
var costArr = [];
var predictRisk = 0;
var predictCurrPric = 0;
var predictCost= 0;
//这里是进行的数公式操作
for( var i = 0; i < persons.length ; i ++){
risk = ( Number(persons[i].政策风险) + Number(persons[i].市场经济风险) + Number(persons[i].市场供求风险) + Number(persons[i].成本风险)) / 4;
riskArr.push(risk);
currentPriceArr.push(Number(persons[i].新房成交均价));
costArr.push(Number(persons[i].成本));
}
predictRisk = riskArr[persons.length -1 ] * 2 - riskArr[persons.length -2] ;
predictCurrPric = currentPriceArr[persons.length -1] * 2 - currentPriceArr[persons.length - 2];
predictCost = costArr[persons.length -1] * 2 - costArr[persons.length -2];
riskArr.push(predictRisk);
currentPriceArr.push( predictCurrPric);
costArr.push(predictCost);
console.log(riskArr );
console.log(currentPriceArr );
console.log(costArr );
$.cookie("riskArr", riskArr);
$.cookie("currentPriceArr", currentPriceArr);
$.cookie("costArr", costArr);
};
// 以二进制方式打开文件
fileReader.readAsBinaryString(files[0]);
});


console.log(files[0].name);

console.log(persons);
console.log(persons.length);
console.log(persons[0].月份);
console.log(persons[0].政策风险);
console.log(persons[0].市场经济风险);
console.log(persons[0].市场供求风险);
console.log(persons[0].成本风险);
$.cookie("riskArr", riskArr);
$.cookie("currentPriceArr", currentPriceArr);
$.cookie("costArr", costArr);

参考文献:
里面有xlsx.core.min.js的下载链接
https://www.cnblogs.com/imwtr/p/6001480.html
网友评论