当前位置:   article > 正文

前端读取excel文件的内容

前端读取excel文件的内容

原始的excel文件:

转化后的数据

使用方法,

1、安装xlsx插件不用再说了,npm

2、新建util文件,我这里是将代码它放在util文件夹下的index.js中,代码如下:

  1. import * as XLSX from 'xlsx'
  2. // 把文件以二进制的方式读出来
  3. let analyseExcelToByte=(file)=>{
  4. return new Promise(resolve=>{
  5. let reader=new FileReader();
  6. reader.readAsBinaryString(file);
  7. reader.onload=ev=>{
  8. resolve(ev.target.result);
  9. }
  10. })
  11. }
  12. // 转换得对应字段表:****这里需要根据自己的需要修改,一般是根据excel中的表头进行设置
  13. let revertChart={
  14. name:{
  15. text:"姓名",
  16. type:"string"
  17. },
  18. phone:{
  19. text:"联系电话",
  20. type:"string",
  21. },
  22. age:{
  23. text:"年纪",
  24. type:"string",
  25. },
  26. local:{
  27. text:"籍贯",
  28. type:"string",
  29. }
  30. }
  31. // 把读取出来得数据变为组后可以传递给服务器的数据(姓名:name、联系电话:phone、年纪:age、籍贯:local)
  32. let parseToServe=(outdata)=>{
  33. let arr=[];
  34. outdata.forEach(item=>{
  35. let obj={};
  36. for(let key in revertChart){
  37. if(!revertChart.hasOwnProperty(key)) break;
  38. let o=revertChart[key],
  39. text=o.text,
  40. type=o.type;
  41. o=item[text]||"";
  42. type==="string" ? (o=String(o)):null;
  43. type==="number" ? (o=Number(o)):null;
  44. obj[key]=o
  45. }
  46. arr.push(obj)
  47. })
  48. return arr
  49. }
  50. // 前端文件导入解析成传递给服务器的数据
  51. export let resolveFile=async (file)=>{
  52. let data= await analyseExcelToByte(file);
  53. // 将文件以二进制读出
  54. return new Promise(resolve=>{
  55. let workbook=XLSX.read(data,{type:"binary"})
  56. // 将文件中的第一个sheet以json的方式读出outdata
  57. let worksheets=workbook.Sheets[workbook.SheetNames[0]];
  58. let outdata=XLSX.utils.sheet_to_json(worksheets)
  59. let serveData=parseToServe(outdata)
  60. resolve(serveData)
  61. })
  62. }

3、注意根据自己的需要修改 revertChart里面的字段内容,一般是根据自己的excel文件中的字段来设置

4、在需要的页面引入util文件,

import {resolveFile} from '../plugin/fileUtils'

直接在页面中使用,就可以看到改造后的数据了

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/478488
推荐阅读
相关标签
  

闽ICP备14008679号