前端解析excel

第一步:安装xlsx;

npm install xlsx

第二步:将文件解析成json

2.1使用并获取excel中sheet1、sheet2的对应数据

复制代码
    const workbook = (await excelToJsonAll(e.file)) || [];
    const sheetNameArr = workbook.SheetNames.filter((item) =>
      item.includes('_Schema'),
    );
    let sheet1, sheet2;
    if (sheetNameArr.length > 0) {
      // 解析出来包含_Schema的sheet
      sheet1 = getIndexSheetData(workbook, 1);
      sheet2 = getIndexSheetData(workbook, 2);
    } else {
      sheet1 = getIndexSheetData(workbook, 0);
      sheet2 = getIndexSheetData(workbook, 1);
    }

2.2封装解析方法

复制代码
// 从工作簿中获取第几个工作表的数据
export function getIndexSheetData(
  workbook: WorkBook,
  index: number = 0,
): any[] {
  const firstSheetName = workbook.SheetNames[index];
  if (!firstSheetName) {
    throw new Error('No sheets found in the workbook');
  }

  const workSheet = workbook.Sheets[firstSheetName];
  if (!workSheet) {
    throw new Error(`Sheet "${firstSheetName}" not found in the workbook`);
  }

  return utils.sheet_to_json(workSheet);
}


// 读取 Excel 文件并转换为 JSON 数据
export async function excelToJsonAll(file: File) {
  const buffer = await file.arrayBuffer(); // 读取文件并转换为 ArrayBuffer

  const data = new Uint8Array(buffer);
  const workbook = read(data, { type: 'array' });
  // 对第一个进行校验是否有
  const firstSheetName = workbook.SheetNames[0];
  if (!firstSheetName) {
    throw new Error('No sheets found in the workbook');
  }

  const workSheet = workbook.Sheets[firstSheetName];
  if (!workSheet) {
    throw new Error(`Sheet "${firstSheetName}" not found in the workbook`);
  }

  return workbook;
}

第三步:获取excel的数据

复制代码
let data=[] 
for (const material of sheet1) {
      const value= toString(material['表头文字']);
      ....
      data.push(value)
}
相关推荐
Python私教2 小时前
如意Agent日志系统重构:从 print() 大海捞针到结构化可观测性栈
java·前端·重构
We་ct2 小时前
LeetCode 97. 交错字符串:动态规划详解
前端·算法·leetcode·typescript·动态规划
Chengbei112 小时前
轻量化 Web 安全日志分析神器 星川智盾日志威胁检测、地理溯源、MITRE ATT&CK 映射,支持 Windows/macOS/Linux
前端·人工智能·安全·web安全·macos·系统安全·安全架构
风流 少年2 小时前
Python Web框架:FastAPI
前端·python·fastapi
GISer_Jing3 小时前
AI时代面试新常态——从“会用工具”到“深挖原理”的跨越
前端·人工智能·ai编程
IT_陈寒3 小时前
React的useEffect把我坑惨了,这些闭包陷阱真要命
前端·人工智能·后端
前端之虎陈随易3 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·typescript·npm·node.js
ayqy贾杰3 小时前
Cursor SDK发布!开发者可直接搬走其内核
前端·vue.js·面试
椰猫子3 小时前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库