美文网首页
获取本地excel,并将里面的内容转成数据

获取本地excel,并将里面的内容转成数据

作者: 婷诗漾 | 来源:发表于2018-03-20 12:31 被阅读0次

应运场景:

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]);
});
QQ拼音截图未命名.png QQ拼音截图未命名.png
  console.log(files[0].name);
QQ拼音截图未命名.png
    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);
QQ拼音截图未命名.png

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

http://blog.csdn.net/zxf1242652895/article/details/73930088

相关文章

网友评论

      本文标题:获取本地excel,并将里面的内容转成数据

      本文链接:https://www.haomeiwen.com/subject/rpwvqftx.html