使用这个js库:https://github.com/SheetJS/sheetjs
中文文档在:https://github.com/rockboom/SheetJS-docs-zh-CN
下载dist中的xlsx.core.min.js即可满足使用
xlsx.core.min.js
一个比较好的教程博客:https://www.cnblogs.com/liuxianan/p/js-excel.html

示例

image.png

  1. <html>
  2. <head>
  3. <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
  4. <script src="./xlsx.core.min.js"></script>
  5. </head>
  6. <body>
  7. <input type="file" id="excel-file">
  8. <textarea id="area" cols="30" rows="10"></textarea>
  9. <script>
  10. $('#excel-file').change(function (e) {
  11. var files = e.target.files;
  12. var fileReader = new FileReader();
  13. fileReader.onload = function (ev) {
  14. try {
  15. var data = ev.target.result
  16. var workbook = XLSX.read(data, {
  17. type: 'binary'
  18. }) // 以二进制流方式读取得到整份excel表格对象
  19. } catch (e) {
  20. console.log('文件类型不正确');
  21. return;
  22. }
  23. //在控制台打印出来表格中的数据
  24. console.log(workbook);
  25. var sheet1 =workbook.Sheets[ workbook.SheetNames[0] ]
  26. console.log(XLSX.utils.sheet_to_json(sheet1,{range:1}))
  27. $("#area").val(JSON.stringify(XLSX.utils.sheet_to_json(sheet1,{range:1})));
  28. };
  29. // 以二进制方式打开文件
  30. fileReader.readAsBinaryString(files[0]);
  31. });
  32. </script>
  33. </body>
  34. </html>

XLSX.utils.sheet_to_json函数可以将sheet输出为json对象。
image.png
range可以指定sheet的范围,数字就是起始行,0表示从第一行开始输出,1从第二行开始。
我写的XLSX.utils.sheet_to_json(sheet1,{range:1})就是从第二行开始输出。输出结果就是对象数组:
image.png