浏览器前端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>
