You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React中如何直接读取src文件夹内的Excel文件无需上传操作

React 本地存储Excel文件直接读取方案

前置准备

首先安装Excel解析依赖xlsx(前端主流Excel解析工具):

npm install xlsx
# 或使用yarn
yarn add xlsx

方案一:Excel存放在public目录(无需额外配置,推荐)

React的public目录下的所有资源都会被原样复制到打包输出目录,可以直接通过相对路径fetch读取:

  • 第一步:把你的Excel文件移动到项目public文件夹下,示例路径为public/test.xlsx
  • 第二步:在组件中编写读取逻辑,示例代码如下:
import * as XLSX from 'xlsx';
import { useEffect } from 'react';

function App() {
  useEffect(() => {
    // 直接fetch public目录下的Excel文件
    fetch('/test.xlsx')
      .then(res => res.arrayBuffer())
      .then(buffer => {
        // 解析Excel文件
        const workbook = XLSX.read(buffer, { type: 'array' });
        // 获取第一个工作表的数据
        const firstSheetName = workbook.SheetNames[0];
        const worksheet = workbook.Sheets[firstSheetName];
        // 转换为对象数组
        const dataArray = XLSX.utils.sheet_to_json(worksheet);
        // 输出到控制台
        console.log('读取到的Excel数据:', dataArray);
      })
      .catch(err => console.error('读取Excel失败:', err));
  }, []);

  return <div>Excel读取测试</div>;
}

export default App;

方案二:Excel存放在src目录

如果必须把文件放在src文件夹下,需要先配置打包工具识别Excel资源,再通过import引入路径后读取:

配置说明

  • 若使用Create React App(CRA):无需额外配置,直接import即可得到资源的最终访问路径
  • 若使用Vite:在vite.config.js中添加如下配置,让Vite识别xlsx文件为静态资源:
export default defineConfig({
  assetsInclude: ['**/*.xlsx'],
  // 其他原有配置
})

代码示例

import * as XLSX from 'xlsx';
import { useEffect } from 'react';
// 引入src目录下的Excel文件,得到资源路径
import excelPath from './test.xlsx';

function App() {
  useEffect(() => {
    fetch(excelPath)
      .then(res => res.arrayBuffer())
      .then(buffer => {
        const workbook = XLSX.read(buffer, { type: 'array' });
        const firstSheet = workbook.Sheets[workbook.SheetNames[0]];
        const dataArray = XLSX.utils.sheet_to_json(firstSheet);
        console.log('读取到的Excel数据:', dataArray);
      });
  }, []);

  return <div>Excel读取测试</div>;
}

export default App;
注意事项
  • TypeScript项目需要额外安装类型声明:npm install @types/xlsx --save-dev
  • 不建议存放体积超过10MB的Excel文件到项目目录,会增大打包体积或静态资源加载耗时
  • sheet_to_json方法默认将第一行作为对象的key,如果你需要自定义解析规则,可以传入配置参数,比如header: 1会输出二维数组格式

内容的提问来源于stack exchange,提问作者Xiang Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:54:04