js 下载url返回的excel数据,并解析为json

XLSX GitHub地址:https://github.com/SheetJS/sheetjs/blob/github/dist/xlsx.full.min.js

需要先引入:XLSX.full.min.js

javascript 复制代码
// 下载文件的请求
fetch(downloadFileUrl).then(response => {
  return rsp.blob()
}).then(data => {
  let reader = new FileReader()
  // reader.readAsDataURL(blob)
  reader.readAsArrayBuffer(blob)
  reader.onload = (e) => {
    console.log('e:都数据流返回的对象:', e)
    let filedata = e.target.result // 文件数据
    // excel都数据流解析数据
    let workbook = XLSX.read(btoa(fixdata(filedata)), {type: 'base64'})
    console.log('读文件后:', workbook)
    // 需要解析第几个Sheet页?
  	let sheet = workbook.Sheets[workbook.SheetNames[0]]
    // sheet解析为json array
    let jsonArray = XLSX.utils.sheet_to_json(sheet)
    console.log('excel解析后的数据:', jsonArray)

    // do domething 解析后的数据jsonArray如何处理
  }
})


// 文件流转 base64
function fixdata(data) {
  var o = '',
    l = 0,
    w = 10240;
  for (; l < data.byteLength / w; ++l)
    o += String.fromCharCode.apply(
      null,
      new Uint8Array(data.slice(l * w, l * w + w))
    );
  o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
  return o;
}

参考链接:
使用XLSX来解析Excel的内容 - 掘金

相关推荐
橙某人13 小时前
LogicFlow 小地图性能优化:从「实时克隆」到「占位缩略块」!🚀
前端·javascript·vue.js
boooooooom13 小时前
讲清 Proxy + effect + track/trigger 流程
javascript·vue.js·面试
leafyyuki13 小时前
在 Vue 项目中玩转 FullCalendar:从零搭建可交互的事件日历
前端·javascript·vue.js
豆苗学前端14 小时前
彻底讲透浏览器缓存机制,吊打面试官
前端·javascript·面试
swipe14 小时前
箭头函数与 this 面试题深度解析:从原理到实战
前端·javascript·面试
进击的尘埃16 小时前
拖拽搭建场景下的智能布局算法:栅格吸附、参考线与响应式出码
javascript
小猪努力学前端16 小时前
基于PixiJS的试玩广告开发-续篇
前端·javascript·游戏
wuhen_n16 小时前
v-model 的进阶用法:搞定复杂的父子组件数据通信
前端·javascript·vue.js
wuhen_n16 小时前
TypeScript 深度加持:让你的组合式函数拥有“钢筋铁骨”
前端·javascript·vue.js
滕青山16 小时前
基于 ZXing 的 Vue 在线二维码扫描器实现
前端·javascript·vue.js