jquery获取excel表格数据

2019-06-17 浏览:1644
jquery获取excel表格数据
评论:(0)复制地址

为了获取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表格的信息

凄凄切切11111
4444421112
4444531113
4444641114
4444651115
4444861116
4444971117
4445081118
4445191119
44452101120
44453111121
44454121122
44455131123
44456
1124


3www




qqqq

五、运行结果

2031701-3c9f9ed670e48c64.webp.jpg

让我们爽的是他返回的是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>



评论:(0)复制地址
发布:苗景云 | 分类:IT技术&设计 | Tags:

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。