前端js解析读取excel文件-js-xlsx

举报
IT 叶新东老师 发表于 2021/12/31 23:18:16 2021/12/31
【摘要】 之前是使用poi报表技术在java后端解析excel,但是想着如果访问量太大会大大增加服务器的负担,就顺便了解下前端解析excel的技术 本文代码下载地址:https://download.csdn.net/download/qq_27184497/10869352 本文使用 js-xlsx 技术进行解析,需要jquery依赖,官网...

之前是使用poi报表技术在java后端解析excel,但是想着如果访问量太大会大大增加服务器的负担,就顺便了解下前端解析excel的技术

本文代码下载地址:https://download.csdn.net/download/qq_27184497/10869352

本文使用 js-xlsx 技术进行解析,需要jquery依赖,官网:http://oss.sheetjs.com/js-xlsx/

开始

新建一个html文件,(js代码也在里面)


  
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <title>JS-XLSX Live Demo</title>
  5. <style>
  6. #drop{
  7. border:2px dashed #bbb;
  8. -moz-border-radius:5px;
  9. -webkit-border-radius:5px;
  10. border-radius:5px;
  11. padding:25px;
  12. text-align:center;
  13. font:20pt bold,"Vollkorn";color:#bbb
  14. }
  15. #b64data{
  16. width:100%;
  17. }
  18. a { text-decoration: none }
  19. button{}
  20. </style>
  21. </head>
  22. <body>
  23. <pre>
  24. <input type="file" name="xlfile" id="xlf" onchange="importf(this)">
  25. <input type="checkbox" name="singleCheck" value="">
  26. </pre>
  27. <button class="submit_all">提交</button>
  28. <pre id="out"></pre>
  29. <br>
  30. <div id="demo"></div>
  31. <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
  32. <script src="./xlsx.full.min.js"></script>
  33. <script>
  34. /*
  35. FileReader共有4种读取方法:
  36. 1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。
  37. 2.readAsBinaryString(file):将文件读取为二进制字符串
  38. 3.readAsDataURL(file):将文件读取为Data URL
  39. 4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
  40. */
  41. var wb;//读取完成的数据
  42. var rABS = false; //是否将文件读取为二进制字符串
  43. function importf(obj) {//导入
  44. if(!obj.files) {
  45. return;
  46. }
  47. var f = obj.files[0];
  48. var reader = new FileReader();
  49. reader.onload = function(e) {
  50. var data = e.target.result;
  51. if(rABS) {
  52. wb = XLSX.read(btoa(fixdata(data)), {//手动转化
  53. type: 'base64'
  54. });
  55. } else {
  56. wb = XLSX.read(data, {
  57. type: 'binary'
  58. });
  59. }
  60. //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
  61. //wb.Sheets[Sheet名]获取第一个Sheet的数据
  62. document.getElementById("demo").innerHTML= JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) );
  63. //行数
  64. console.log(wb.SheetNames.length);
  65. };
  66. if(rABS) {
  67. reader.readAsArrayBuffer(f);
  68. } else {
  69. reader.readAsBinaryString(f);
  70. }
  71. }
  72. function fixdata(data) { //文件流转BinaryString
  73. var o = "",
  74. l = 0,
  75. w = 10240;
  76. for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
  77. o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
  78. return o;
  79. }
  80. </script>
  81. </body>
  82. </html>

测试一下,excel内容

解析后的内容

文章来源: yexindong.blog.csdn.net,作者:java叶新东老师,版权归原作者所有,如需转载,请联系作者。

原文链接:yexindong.blog.csdn.net/article/details/85210709

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。