Upload文件导入多条数据到输入框

news2024/11/23 15:35:58

需求场景:文本框内容支持批量导入(文件类型包括’.txt, .xls, .xlsx’)。使用AntD的Upload组件处理。
在这里插入图片描述

下面是Upload的配置(伪代码),重点为beforeUpload中的逻辑

// Antd 中用到的Upload组件
import { UploadOutlined } from '@ant-design/icons';
import { Button, message, Upload, message as $Message } from 'antd';
import React from 'react';

// 需要导入xlsx插件处理excel中的数据 --> 安装插件 xlsx    npm install xlsx --save   
import * as XLSX from 'xlsx/xlsx.mjs'

// 将导入的数据导入表单输入框的方法,不需要可忽略
const importData = (list) => {
    form.setFieldValue('target', list);
}

// upload的配置
const uploadProps = {
    name: 'file',
    action: '',
    headers: {
      authorization: 'authorization-text',
    },
    maxCount: 1,
    accept: '.txt, .xls, .xlsx',
    beforeUpload(file) {
      const reader = new FileReader();
      console.log('文件类型:', file.type);
      // 文本文件 需要格式处理
      if (file.type === 'text/plain') {
        //读取文件
        reader.readAsText(file, ['gb2312', 'utf-8']);
        reader.onload = (ev) => {
          // console.log('文件上传', ev.target.result);
          // 文本格式处理 inputTextareaFormat()为自定义的格式处理方法,例如可以处理空格回车的文本,返回值为批量导入数据的数组inputTextareaFormat(ev.target.result);
          let textArr = ev.target.result 
          
          if (!textArr.length) {
            message.error(`${file.name} 文件内容为空,导入失败!`);
            return false;
          }
          // importData 传入输入框
          importData(textArr.toString().replace(/,/g, '\n'));
          message.success(`导入成功`);
        };
      } else {
        // Excel文件
        reader.readAsBinaryString(file);
        reader.onload = (ev) => {
          const data = XLSX.read(ev.target.result, { type: 'binary' });
          // console.log('文件上传表格', data);
          let sheet = Object.keys(data.Sheets)[0];
          const arr = XLSX.utils.sheet_to_json(data.Sheets[sheet]); //第一列为键名的数组对象
          console.log('表格数据', arr);
          let domainArr = [];
          if (arr.length) {
            arr.map(item => {
              //数据拼接 根据Excel表格定义好的sheet title
              domainArr.push(item['表头名字']);
            })
            // importData 传入输入框
            importData(domainArr.toString().replace(/,/g, '\n'));
            message.success(`导入成功`);
          } else {
            message.error(`${file.name} 文件内容为空,导入失败!`);
          }
        };
      }
      // 阻止上传
      return false;
    },
    showUploadList: false,
    disabled: disabled
  };

// Upload 组件使用
 <Upload {...uploadProps}>
      <Button icon={<UploadOutlined />}>
      	批量导入
      </Button>
 </Upload>

参考:https://blog.csdn.net/weixin_66709443/article/details/130005481

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADSCOPE加入中国互联网协会!

近日&#xff0c;经协会批准&#xff0c;ADSCOPE&#xff08;上海倍孜网络技术有限公司&#xff09;正式加入中国互联网协会&#xff0c;成为会员单位。 中国互联网协会隶属于中华人民共和国工业和信息化部&#xff0c;是由中国互联网行业及与互联网相关的企事业单位、社会组织…

网络编程--模拟HTTP服务器

下面是一个简单的例子&#xff0c;来模拟HTTP服务器 这里只是简单的按照 HTTP 协议来构造数据 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> #include <string.h> #include <arpa/inet.h>//处理连…

牛客30道Java专项练习-错题-01

一、Java初始化过程&#xff1a; 初始化父类种的静态成员变量和静态代码块&#xff0c;顺序执行初始化子类种的静态成员变量和静态代码块&#xff0c;顺序执行初始化父类的普通成员变量和代码块&#xff0c;再执行父类的构造函数初始化子类的成员变量和代码块&#xff0c;在执…

2024考研408-计算机网络 第一章-计算机网络体系结构学习笔记.md

文章目录 前言一、计算机网络概述1.1、概念及功能1.1.1、计算机网络的概念1.1.2、计算机网络的功能功能1、数据通信功能2、资源共享功能3、分布式处理功能4、提高可靠性&#xff08;分布式处理引申功能&#xff09;功能5、负载均衡&#xff08;也是分布式处理引申功能&#xff…

Javascript Object学习1

JavaScript原生提供一个Object对象&#xff0c;O大写&#xff0c;所有其他对象都继承自这个对象&#xff1b; Object本身也是一个构造函数&#xff0c;可以直接通过它来生成新对象&#xff1b; 对象的初始化有两种方式&#xff0c;构造函数模式和字面量模式&#xff1b; 下面对…

Meta分析的选题与文献计量分析CiteSpace应用丨R语言Meta分析【数据清洗、精美作图、回归分析、诊断分析、不确定性及贝叶斯应用】

目录 ​专题一、Meta分析的选题与文献计量分析CiteSpace应用 专题二、Meta分析与R语言数据清洗及相关应用 专题三、R语言Meta分析与精美作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析与进阶 专题六、R语言Meta分析的不确定性及贝叶斯应用 专题七、深度拓展…

innovus修short脚本

innovus版脚本分享&#xff1a; deselectAll foreach short [dbGet [dbGet top.markers.subType Short] -p] { set box [dbGet $short.box] set layer [dbGet $short.layer.name] select_obj [dbGet [dbQuery -area $box -layer $layer -objectType wire].net.is CTS clock 0…

SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出

介绍 EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下&#xff0c;快速完成 Excel 的读、写等功能。 EasyExcel文档地址&#xff1a; https://easyexcel.opensource.alibaba.com/ 快速开始 …

Generative Diffusion Prior for Unified Image Restoration and Enhancement 论文阅读笔记

这是CVPR2023的一篇用diffusion先验做图像修复和图像增强的论文 之前有一篇工作做了diffusion先验&#xff08;Bahjat Kawar, Michael Elad, Stefano Ermon, and Jiaming Song, “Denoising diffusion restoration models,” arXiv preprint arXiv:2201.11793, 2022. 2, 4, 6,…

6. Spring Boot 的创建和使用

目录 1. 什么是 Spring Boot 2. Spring Boot 的优点 3. Spring Boot 项目的创建 3.1 使用 Idea 创建 3.2 网页版创建 4. 项目介绍和运行 4.1 运行项目 4.2 通过浏览器输出 5. 注意事项 1. 什么是 Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&#xff0c…

100、用简洁的语言描述一下:TCP的三次握手和四次挥手(不需要长篇大论)

TCP的三次握手和四次挥手 TCP协议是7层网络协议中的传输层协议&#xff0c;负责数据的可靠传输。 1、三次握手 在建立TCP连接时&#xff0c;需要通过三次握手来建立&#xff0c;过程是: 客户端向服务端发送一个SYN服务端接收到SYN后&#xff0c;给客户端发送一个SYN_ACK客户…

leetcode 852. Peak Index in a Mountain Array(峰值索引)

一个数组保证是峰值数组&#xff08;存在一个值大于左边和右边部分数组&#xff09;&#xff0c;找出峰值的index。 要求时间复杂度在O(logn)。 思路&#xff1a; 时间复杂度为O(logn), 可以想到用binary search. 其实用O(n)的找最大值也能通过。 public int peakIndexInMou…

PysparkNote006---pycharm加载spark环境

pycharm配置pyspark环境&#xff0c;本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…

Python 基础总结

title: Python 基础总结 date: 2023-07-19 10:51:55 tags: Python categories:Python cover: https://cover.png feature: false 1. print() 函数 1.1 基础使用 # 输出数字 print(23) print(11.323)# 输出字符串 print(你好) print("你好")# 输出表达式 print(3 *…

C++-stack 和 queue

stack 和 queue介绍 两者分别是C当中的 栈和队列&#xff0c;只不过在C当中&#xff0c;这两者没有用传统的方式&#xff0c;比如顺序存储和链式存储来实现了&#xff0c;两者现在使用的是一种权限的方式来实现&#xff1b; 都是用容器适配器来实现&#xff0c;开发者考虑到&a…

PyToch 深度学习 || 3. 卷积神经网络 | 3.1 深度学习中的卷积操作

深度学习中的卷积操作 文章目录 深度学习中的卷积操作1. 卷积2. 一维卷积2.1 使用nn.functional库中conv1d2.2 使用nn库中的Conv1d 3. 二维卷积3.1 nn.functional.conv2d3.2 nn.Conv2d 1. 卷积 加权求和是一种非常重要的运算&#xff0c;可以整合局部数字特征进而是提取局部信…

Linux CentOS监控系统的运行情况工具 - top/htop/glances/sar/nmon

在CentOS系统中&#xff0c;您可以使用以下工具来监控系统的运行情况&#xff1a; 1. top&#xff1a; top 是一个命令行工具&#xff0c;用于实时监控系统的进程、CPU、内存和负载情况。您可以使用以下命令来启动 top&#xff1a; top 输出 2. htop&#xff1a; htop 是一…

WSL 2 环境配置

WSL 2 环境配置 wsl2是windows内置的linux子系统&#xff0c;安装步骤如下&#xff1a; Win10 版本号为 2004&#xff08;内部版本19041或更高&#xff09;即可&#xff0c;如果低于此版本可使用 Windows 10 易升工具手动升级。下载 Windows 10 易升工具&#xff1a; https:…

DAY52:动态规划(十七)子序列问题:最长递增子序列+最长连续递增序列+最长重复子数组

文章目录 300.最长递增子序列&#xff08;注意初始化和结果取值&#xff09;思路DP数组含义递推公式初始化最开始的写法debug测试&#xff1a;解答错误debug测试2&#xff1a;result初始值 修改完整版总结 674.最长连续递增序列思路1&#xff1a;滑动窗口思路2&#xff1a;动态…

【Leetcode】54.螺旋矩阵

一、题目 1、题目描述 给你一个 m m m 行 n n n 列的矩阵 matrix,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例1: 输入:matrix =