美文网首页
jquery获取excel表格数据

jquery获取excel表格数据

作者: 铁木真丫丫丫 | 来源:发表于2017-11-08 18:03 被阅读1186次

    为了获取excel表格信息问遍了度娘,但是结果很不爽,看了十个文章九个是一样的,剩下那个不一样是因为复制的时候没复制全!!!不止这些,复制也就算了,你也得给截图和注释啊,整个帖子赤裸裸的代码什么意思啊???
    为了造福众多单身屌丝们。我觉得给之前的帖子的代码写明用法,各位如果觉得哥们儿某句解释写的不是很明白可以吐槽,我好改进,嘿嘿,下面进入正题吧骚年们

    一、首先需要需要引入需要的包

    这里是cdn引入的,不用下载,所以直接复制用就行了,不用那么麻烦自己去网上找包

    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
    <script src="https://cdn.bootcss.com/xlsx/0.11.5/xlsx.core.min.js"></script>
    

    二、一个上传文件的file类型的input标签

    这里给它起个id就叫excel-file吧

    <input type="file" id="excel-file">
    

    三、js相关操作对选中.xls文件进行解析,获取数据

    //给input标签绑定change事件,一上传选中的.xls文件就会触发该函数
    $('#excel-file').change(function(e) {
        var files = e.target.files;
        var fileReader = new FileReader();
            fileReader.onload = function(ev) {
                try {
                    var data = ev.target.result
                    var workbook = XLSX.read(data, {
                            type: 'binary'
                        }) // 以二进制流方式读取得到整份excel表格对象
                    var 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; // 如果只取第一张表,就取消注释这行
                    }
                }
                //在控制台打印出来表格中的数据
                console.log(persons);
           };
           // 以二进制方式打开文件
           fileReader.readAsBinaryString(files[0]);
    });
    

    四、上传的.xls表格的信息

    凄凄切切 1 1111
    44444 2 1112
    44445 3 1113
    44446 4 1114
    44446 5 1115
    44448 6 1116
    44449 7 1117
    44450 8 1118
    44451 9 1119
    44452 10 1120
    44453 11 1121
    44454 12 1122
    44455 13 1123
    44456 1124
    3www
    qqqq

    五、运行结果

    运行结果.png
    让我们爽的是他返回的是json数组,这真是太方便我们操作了,但是有的吃瓜群众可能看不懂了,就一个‘凄凄切切’数据,怎么出来那么多,其实我们excel表的第一行它默认为表头,也就是说,'1','1111',‘凄凄切切’这三个都是表头,它们的健值对所对应的值就是这一列的值,数组下表对应的则是表格的一行数据

    六、最通俗易懂的解释

    如果有的好汉看了之后也没懂,但是就是想拿过来直接用的话,那些下面直接copy运行就ok啦

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
            <script src="https://cdn.bootcss.com/xlsx/0.11.5/xlsx.core.min.js"></script>
        </head>
    
        <body>
            <input type="file" id="excel-file">
            <script>
                $('#excel-file').change(function(e) {
                    var files = e.target.files;
                    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; // 如果只取第一张表,就取消注释这行
                            }
                        } 
                        console.log(persons);
                    };   
                    // 以二进制方式打开文件
                    fileReader.readAsBinaryString(files[0]);
                });
            </script>
        </body>
    
    </html>
    

    如果各位看了有收获的话请记得点个赞,火箭刷起来!!!

    程序员必备图.png

    相关文章

      网友评论

          本文标题:jquery获取excel表格数据

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