React|获取oss存储的文件,并转为json格式

使用axios通过oss的url获取.xlsx文件流,处理后得到json格式数据:

安装xlsx:

npm install xlsx

javascript 复制代码
import axios from "axios";
import * as XLSX from "xlsx";

//#region xlsx(oss) to json
async function getFileStream(url) {
  const response = await axios.get(url, { responseType: "blob" });
  return response.data;
}

async function convertFileStreamToWorkbook(fileStream) {
  const reader = new FileReader();
  return new Promise((resolve, reject) => {
    reader.onload = (event) => {
      try {
        const workbook = XLSX.read(event.target.result, { type: "binary" });
        resolve(workbook);
      } catch (error) {
        reject(error);
      }
    };
    reader.onerror = (error) => {
      reject(error);
    };
    reader.readAsBinaryString(fileStream);
  });
}

async function convertWorkbookToJson(workbook) {
  const sheetName = workbook.SheetNames[0]; // 获取第一个工作表的名称
  const worksheet = workbook.Sheets[sheetName]; // 获取第一个工作表对象
  const jsonData = XLSX.utils.sheet_to_json(worksheet); // 将工作表对象转换为JSON对象
  return jsonData;
}

export async function xlsxToJson(OSSUrl) {
  const fileStream = await getFileStream(OSSUrl);
  const workbook = await convertFileStreamToWorkbook(fileStream);
  const jsonData = await convertWorkbookToJson(workbook);
  return jsonData;
}
//#endregion

使用:

javascript 复制代码
    (async () => {
      const json = await xlsxToJson(
        "https://xxxxxxx.xlsx" // ossUrl
      );
      setAuthorDatas([...json]);
    })();
相关推荐
StringerChen4 分钟前
Qt ui提升窗口的头文件找不到
开发语言·qt
数据小爬虫@10 分钟前
如何利用PHP爬虫获取速卖通(AliExpress)商品评论
开发语言·爬虫·php
小马哥编程1 小时前
Function.prototype和Object.prototype 的区别
javascript
小白学前端6661 小时前
React Router 深入指南:从入门到进阶
前端·react.js·react
java1234_小锋1 小时前
MyBatis如何处理延迟加载?
java·开发语言
web130933203981 小时前
前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
前端
王小王和他的小伙伴1 小时前
解决 vue3 中 echarts图表在el-dialog中显示问题
javascript·vue.js·echarts
FeboReigns1 小时前
C++简明教程(10)(初识类)
c语言·开发语言·c++
学前端的小朱1 小时前
处理字体图标、js、html及其他资源
开发语言·javascript·webpack·html·打包工具
outstanding木槿1 小时前
react+antd的Table组件编辑单元格
前端·javascript·react.js·前端框架