当前位置: 首页 > news >正文

React 前端使用 Input 输入框的样式上传一个 Excel 文件并读取内容对象数组

本文讲解了关于如何在 React 前端使用 Input 输入框上传一个 Excel 文件,并读取文件内容转成 json 数据格式(对象数组)。

文章目录

    • 1、Excel 文件展示
    • 2、完整代码
    • 3、数据结果展示
    • 4、前端样式展示
    • 5、使用 button 按钮的前端样式

1、Excel 文件展示

Excel 文件

2、完整代码

完整代码包装成了一个组件。需要注意,React 本身不支持读取 Excel 文件,需要导入依赖,在项目的 package.json 中引入依赖,我的引入的 xlsx 依赖版本如下:

"xlsx": "^0.18.5",
import React from 'react';
import * as XLSX from 'xlsx';const ReadExcelWord: React.FC = () => {const handleFileChange = (event: any) => {const inputFile = event.target.files[0];if (inputFile){const reader = new FileReader();reader.onload = (e: any) => {const data = new Uint8Array(e.target?.result);const workbook = XLSX.read(data, {type: 'array'});// 只读取第一个sheetconst firstSheetName = workbook.SheetNames[0];const workSheet = workbook.Sheets[firstSheetName];const jsonData = XLSX.utils.sheet_to_json(workSheet, { header: 1});console.log("jsonData", jsonData);};reader.readAsArrayBuffer(inputFile); }}// 最重要的就是 input 的 type = filereturn (<div><input id="upfile" type="file" accept=".xlsx" onChange={handleFileChange} /></div>);
};export default ReadExcelWord;

3、数据结果展示

json对象结果

4、前端样式展示

前端展示的样式有些不好看,可以选择下面的展示样式,使用一个 button 按钮,隐藏 Input 输入框。
前端样式

5、使用 button 按钮的前端样式

使用其它样式的时候也是需要 input 样式。

import React from 'react';
import * as XLSX from 'xlsx';const ReadExcelWord: React.FC = () => {const handleFileChange = (event: any) => {const inputFile = event.target.files[0];if (inputFile){const reader = new FileReader();reader.onload = (e: any) => {const data = new Uint8Array(e.target?.result);const workbook = XLSX.read(data, {type: 'array'});// 只读取第一个sheetconst firstSheetName = workbook.SheetNames[0];const workSheet = workbook.Sheets[firstSheetName];const jsonData = XLSX.utils.sheet_to_json(workSheet, { header: 1});console.log("jsonData", jsonData);};reader.readAsArrayBuffer(inputFile); }}// input 输入框的 id = "upfile" 很重要const handleButtonClick = () => {let upExcel = document.getElementById("upfile");upExcel?.click();}return (<div><button onClick={handleButtonClick}>上传文件</button><input id="upfile" type="file" style={{ display: "none" }} accept=".xlsx" onChange={handleFileChange} /></div>);
};export default ReadExcelWord;

http://www.mrgr.cn/news/66155.html

相关文章:

  • 11.4工作笔记
  • 使用 `Celery` 配合 `RabbitMQ` 作为消息代理,实现异步任务的调度、重试、定时任务以及错误监控等功能
  • Python 字符串类型中 ``split(“\n“)`` 与 ``splitlines()`` 方法的一些区别
  • 企业AI助理驱动的决策支持:从数据洞察到战略执行
  • git入门教程9:配置Git钩子
  • 单体架构的 IM 系统设计
  • 跳蚤市场之商品发布功能
  • 鉴源实验室·测试设计方法-正交实验法
  • 关于大模型微调与训练的问题,大模型训练的难点在哪里?
  • 海报在线制作系统
  • 全面解析:区块链技术及其应用
  • 光控资本:两大行业迎来利好,新能源和工业硅行业受益股票盘点!
  • 武林苍穹,巅峰鏖战
  • 安卓内核内存回收
  • 【Linux】网络编程:应用层协议—HTTP协议
  • 探索儿童自闭症康复的新方法,让你惊叹不已!
  • 多种msvcp110.dll丢失修复的步骤教程,一步步教你修复丢失msvcp110.dll方法
  • 如何连接邻居家的wifi
  • 小语言模型介绍与LLM的比较
  • AI 大模型如何重塑软件开发
  • 1范数和无穷范数定义、对偶关系、1范数和无穷范数是凸函数的详细证明过程
  • Authorization: Bearer {token}
  • Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
  • 揭秘网工利器:11个CMD命令大显威
  • Fastflow工作流系统源码
  • OSI七层模型以及区别和对应范围