浏览器前端js解析excel

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>

jszip要放在xlsx的前面引入

<html>

<head>
    <script src="jszip.js"></script>
    <script src="xlsx.js"></script>
</head>

<body>
    <script>
        function parseExcel(file) {
            return new Promise(function (resolve, reject) {
                var reader = new FileReader();
                var result=[];

                reader.onload = function (e) {
                    var data = e.target.result;
                    var workbook = XLSX.read(data, { type: 'binary' });

                    workbook.SheetNames.forEach(function (sheetName) {
                        var XL_row_object = XLSX.utils.get_formulae(workbook.Sheets[sheetName]);

                        var currentRowNumber = 1;
                        var currentRow = {};
                        for (var i = 0; i < XL_row_object.length; i++) {
                            var temp = XL_row_object[i];//A1='a
                            var column = temp.split("='")[0];//A1
                            var value = temp.split("='")[1];//a
                            var rowNumber = parseInt(column.replace(/[^0-9]+/g,''));//1
                            var columnName = column.replace(/[^a-zA-Z]+/g,'');//A

                            if (currentRowNumber == rowNumber) {
                                currentRow[columnName] = value;
                            } else {
                                result.push(currentRow);
                                currentRowNumber = rowNumber;
                                currentRow = {};
                                currentRow[columnName] = value;
                            }
                        }
                        if (XL_row_object.length > 0)
                            result.push(currentRow);
                    });
                    resolve(result);
                };

                reader.onerror = function (ex) {
                    reject(new Error(ex));
                };

                reader.readAsBinaryString(file);
            });
        };

        function parse() {
            var file = document.getElementById("File").files[0];
            if (file) {
                parseExcel(file).then(function(result){
                    console.log(result);
                });
            }
        }
    </script>

    <input type="file" id="File">
    <br/>
    <button onclick="parse()">ok</button>
</body>

</html>

 

posted on 2017-07-25 17:08  凡一二三  阅读(1056)  评论(0编辑  收藏  举报