当前位置: 首页 > 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.lryc.cn/news/477124.html

相关文章:

  • 【测试工具】Fastbot 客户端稳定性测试
  • 软件测试学习笔记丨Vue常用指令-输入绑定(v-model)
  • C#、C和C++的主要区别
  • 我们来学mysql -- 连接(原理版)
  • PyQt5的安装与简介
  • 100种算法【Python版】第43篇——优化算法之模拟退火算法
  • 初识动态规划(由浅入深)
  • 关于大模型微调与训练的问题,大模型训练的难点在哪里?
  • 如何对数据库的表字段加密解密处理?
  • 六、Go语言快速入门之数组和切片
  • Java:数组的定义和使用(万字解析)
  • 密码学简要介绍
  • 2024.11月最新智能问答AI创作系统源码,GPT4.0多模态模型+AI换脸+AI智能体GPTs应用+AI绘画(Midjourney)+详细搭建部署教程
  • 江协科技STM32学习- P34 I2C通信外设
  • Python 继承、多态、封装、抽象
  • 在.net下后台设置前台UEditor编辑器不可编辑
  • Flutter CustomScrollView 效果-顶栏透明与标签栏吸顶
  • 【新手入门软件测试--该如何分辨前后端问题及如何定位日志--前后端问题分辨与日志定位查询问题】
  • 【Java Web】DAO模式及单例模式(含代码示例)
  • 深入探讨SEO分析技巧助力网站流量提升
  • Chrome 130 版本开发者工具(DevTools)更新内容
  • 深度学习基础知识-残差网络ResNet
  • Linux云计算个人学习总结(二)
  • Java入门(7)--网络编程
  • [思考记录]思维局限,以为懂了
  • 力扣题目解析--最长公共前缀
  • 不画饼——研究生学习和赚钱的平衡点
  • 华为实时视频使用FLV播放RTSP流
  • JAVA设计模式之【建造者模式】
  • 【jvm】为什么Xms和Xmx的值通常设置为相同的?