js插件下载地址:
https://github.com/SheetJS/js-xlsx
https://github.com/SheetJS/js-xls
<!doctype html> <html> <head> <title>EXCEL转JSON</title> <meta charset="UTF-8" /> <script type="text/javascript" src="http://mat1.gtimg.com/www/asset/lib/jquery/jquery/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="/xls/js/xls.js"></script> <script type="text/javascript" src="/xls/js/jszip.js"></script> <script type="text/javascript" src="/xls/js/xlsx.js"></script> </head> <body> <div> <input type='file' onchange='readFile(event)'> </div> <div> <textarea id='debug' rows="50" cols="200"></textarea> </div> </body> <script> var excel = new Object(); var sheet = new Object(); var row = new Object(); var cell = new Object(); var x ; var wb; var output; var filename; var rows_a,rows_b; var cols_a,cols_b; var range = new Object(); var readFile = function(event) { var read = new FileReader(); var file = event.target.files[0]; read.readAsBinaryString(file); filename = file.name; read.onload = function (event){ var res = event.currentTarget.result; var fileType = getFileType(filename).toString(); switch (fileType){ case '.xls': x = XLS; break; case '.xlsx': x = XLSX; break; default: x = null; } if(x){ wb = x.read(res, { type: 'binary' }); excel = getEXCEL(wb); output = excel; }else{ var info = {error:'can not resolve file end with :'+fileType}; output = getOutput(info,'obj'); } console.log(output); out_json = getOutput(output,'json'); $('#debug').val(out_json); }; }; function getEXCEL(wb){ var Sheetnames = wb.SheetNames; var Sheets = new Object(); var Sheet = new Object(); Sheets = wb.Sheets; excel['sheetSize'] = Sheetnames.length.toString(); excel['excelName'] = filename; excel["sheets"] = []; for(var i=0;i<Sheetnames.length;i++){ Sheet = Sheets[Sheetnames[i]]; range = getRanger(Sheet['!ref']); rows_a = range.row; cols_a = range.col; var m = 0; sheet = new Object(); sheet['rowSize'] = rows_a.toString(); sheet['colSize'] = cols_a.toString(); sheet['sheetName'] = Sheetnames[i]; sheet["rows"] = []; sheet["title"] = new Object(); for(var j=0;j<rows_a;j++){ row = new Object(); row['cells'] = []; for(var m=0;m<cols_a;m++){ cell = new Object(); row['cells'].push(cell); } sheet["rows"].push(row); } for(k in Sheet){ if(isCell(k)){ range = getRanger(k); rows_b = range.row.toString(); cols_b = range.col.toString(); row = sheet["rows"][rows_b-1]; row.val = null; row.val = 'true'; cell = row['cells'][cols_b-1]; cell.value = null; cell.value = Sheet[k].w; } } for(t in sheet["rows"]){ var tit = sheet["rows"][t]; if(tit.val){ sheet["title"] = sheet["rows"][t]; break; } } excel["sheets"].push(sheet); } return excel; } function isCell(str){ var reg = /^[a-zA-Z]+[0-9]+$/; return reg.test(str); } function getRowNumber(key){ var reg = /[0-9]+$/; var rownumber = reg.exec(key); return rownumber; } function getColLetter(key){ var reg = /^[a-zA-Z]+/; var colletter = reg.exec(key); return colletter; } function getColNumber(key){ var reg = /[a-zA-Z]+/; var colletter = reg.exec(key); return colletter; } function getOutput(obj,type){ switch (type){ case 'json' : return JSON.stringify(obj); break; case 'obj' : return obj; break; default : return JSON.stringify(obj); } } function getRanger(ref){ if(ref == undefined){ range.row = "0"; range.col = "0"; }else{ var reg = /:[a-zA-Z]+[0-9]+/; var reg2 = /^[a-zA-Z]+[0-9]+$/; var pos = reg.exec(ref); if(pos == undefined ){ pos = reg2.exec(ref); } var r = getRowNumber(pos).toString(); var codes = []; var n; var letter = getColNumber(pos).toString(); letter = letter.toLocaleLowerCase(); n = 0; for(i in letter){ var code = letter[i].charCodeAt()-96; codes[i] = code; n++; } n--; var mathstr = 0; for(j in codes){ mathstr = 'Math.pow(26,'+n+')*'+codes[j] + '+'+ mathstr; n--; } var c = eval(mathstr).toString(); range.row = r; range.col = c; } return range; } function getFileType(filepath){ var reg = /.[a-zA-Z0-9]+$/; var filePostfix = reg.exec(filepath); return filePostfix; } </script> </html>