reactNative导入excel文件

news2024/10/1 5:27:18

组件内导入

import {TouchableOpacity,PermissionsAndroid} from 'react-native';
import RNFS from 'react-native-fs';
import XLSX from 'xlsx';
import DocumentPicker from 'react-native-document-picker';
import {Buffer} from 'buffer';

// 需要安装一下三个,Buffer和react-native无需安装
   "xlsx": "^0.18.5"
   "react-native-fs": "^2.20.0",
   "react-native-document-picker": "^9.0.1",

下面是逻辑代码

// 导入设备代码
  function importdevice() {
    console.log('导入设备');
    requestFileAccessPermission(async state => {
      if (state) {
        openDocumentPicker();
      } else {
        ToastAndroid.show('权限获取失败', 1500);
      }
    });
  }
  
  function parseDataArray(data) {
    // 第一行为表头,从第二行开始为数据行
    const header = ['name', 'gender', 'birthday', 'height', 'weight'];
    const dataArray = [];

    for (let i = 1; i < data.length; i++) {
      const row = data[i];
      const rowData = {};

      // 将表头与数据行的每个数据项组装成键值对
      for (let j = 0; j < header.length; j++) {
        rowData[header[j]] = row[j];
      }
      dataArray.push(rowData);
    }
    return dataArray;
  }
  
  async function openDocumentPicker() {
    try {
      const result = await DocumentPicker.pick({
        type: [DocumentPicker.types.allFiles], // 允许用户选择所有类型的文件
      });
      // 使用RNFS模块来读取文件内容
      const fileContents = await RNFS.readFile(result[0].uri, 'base64');

      const binaryData = Buffer.from(fileContents, 'base64');
      const workbook = XLSX.read(binaryData, {type: 'buffer'});
      const sheetNameList = workbook.SheetNames;
      const firstSheetName = sheetNameList[0];

      const worksheet = workbook.Sheets[firstSheetName];
      const data = XLSX.utils.sheet_to_json(worksheet, {header: 1});
      const members = parseDataArray(data);
      console.log('members',members);  // 这里就是excel文档数据,以数组格式展开
    } catch (error) {
      ToastAndroid.show('导入失败', 1500);
      if (DocumentPicker.isCancel(error)) {
        console.log('User cancelled the document picker.');
      } else {
        console.log('Error while picking the document:', error);
      }
    }
  }

  // 定义一个异步函数,用于请求文件访问权限
  async function requestFileAccessPermission(callBack) {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
        {
          title: 'File Access Permission',
          message: 'This app needs access to your files.',
          buttonPositive: 'OK',
        },
      );

      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        console.log('File access permission granted.');
        callBack(true);
      } else {
        callBack(false);
        console.log('File access permission denied.');
      }
    } catch (error) {
      console.log('Error while requesting file access permission:', error);
    }
  }

触发导入的按钮

		  <TouchableOpacity
            style={[styles.beginSession]}
            onPress={importdevice}>
            <Text style={styles.buttonTitle}>批量导入</Text>
          </TouchableOpacity>

如下所示文档

在这里插入图片描述
打印结果如下

在这里插入图片描述

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

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

相关文章

Standford Compiler Course Assignment 2

第二部分的作业是语法分析&#xff0c;通过编写cool.y(这个assignment的任务)&#xff0c;利用bison将其自动生成语法分析LALR(1)的代码。 语法分析&#xff0c;就是将词法分析阶段已经识别好的token&#xff0c;按照语法的规则&#xff0c;构建抽象语法树的过程。 比如以下的…

读书笔记之《敏捷测试从零开始》(一)

大家好&#xff0c;我是rainbowzhou。 子曰&#xff1a;学而时习之&#xff0c;不亦说乎&#xff1f;今天我想和大家分享一本测试书籍——《敏捷测试从零开始》。以下为我的读书笔记&#xff1a; 精彩片段摘录&#xff1a; 焦虑往往来自于对比&#xff0c;当你在自己的圈子里面…

Elasticsearch之mapping

文章目录 以显式的方式创建一个映射查看某个具体索引的mapping定义向已存在的映射中添加一个新的属性查看映射中指定字段的定义信息更新已存在映射的某个字段 1、 官方文档地址 2、 字段类型 1、定义&#xff1a;映射是定义文档及其包含的字段如何存储和索引的过程。 2、每个…

LabVIEW在 XY Graph中选择一组点

LabVIEW在 XY Graph中选择一组点 问题&#xff1a;有一个包含许多点的XY Graph&#xff0c;在程序开发中&#xff0c;对于显示XY Graph中的多个点&#xff0c;如何进行选取。最好能像图像处理中的ROI一样&#xff0c;并且它们的颜色可以更改&#xff0c;可以在其中选择一些ROI…

企业安全—SDL概述篇

0x00 前言 众所周知&#xff0c;从源头开始就开发安全的代码&#xff0c;比产品已经成型之后付出的代价要小很多&#xff0c;也就是一直在说的安全左移的概念。最好就是从一开始&#xff0c;大家就用最安全的代码&#xff0c;或者是框架&#xff0c;那么开发出来的产品必然会减…

C++ string 类的其他操作

4.3.2 string 类的其他操作 在C新增string类之前,程序员也需要完成诸如给字符串赋值等工作。对于C语言式的字符串,程 序员使用C语言库中的函数来完成这些任务。头文件cstring(以前为string.h)提供了这些函数。例如,可 以使用函数 strcpy()将字符串复制到字符数组中,使用函数…

小样本学习(2)--LibFewShot使用

目录 一、LibFewShot安装 1、LibFewShot代码仓库 2、配置环境 3、测试安装是否正确 二、LibFewShot结构 1、config文件夹 2、core文件夹 3、reproduce文件夹 4、results文件夹 三、如何训练自己的数据集 1、调用主配置文件 2、修改主配置文件 一、LibFewShot安装…

实时流量监控

任何企业的IT管理员的主要目标都是交付一个高度稳定的网络&#xff0c;没有任何压力或重大故障&#xff0c;但是考虑到动态在今天的技术和网络中&#xff0c;这可能需要付出巨大的努力来获得可见性并避免负面影响。 交付高响应的网络和应用程序意味着保持网络正常运行&#xf…

C#开发的OpenRA游戏之金钱系统(5)

C#开发的OpenRA游戏之金钱系统(5) 前面分析了采矿车到矿场采矿的过程,那么采矿车什么时候采满呢?采满之后又是怎么样运送到精炼工厂呢? 首先我们来分析采矿车是怎么样判断采满矿产的,毕竟采矿车不能无限装载矿产资源。所以我们再次回到采矿车类Harvester,来分析它怎么…

推荐几个程序员必逛的个人技术博客网站

1、美团技术团队 地 址: 美团技术团队简 介&#xff1a;美团技术团队的博客&#xff0c;干货满满。推荐指数&#xff1a;⭐⭐⭐⭐⭐ ​ 2、阮一峰的网络日志 地 址: 阮一峰的个人网站 - Ruan YiFengs Personal Website简 介&#xff1a;大神阮一峰&#xff0c;博客风格真正…

期中考核复现

web 1z_php ?0o0[]1A&OoO[]2023a include "flag.php"&#xff1a;尝试包含名为 "flag.php" 的文件。这意味着它会尝试引入一个名为 "flag.php" 的脚本文件&#xff0c;其中可能包含一些敏感信息或标志。 error_reporting(0)&#xff1a;…

Python中使用cv2.resize()函数批量自定义缩放图像尺寸

目录 常用插值缩放方法缩放示例代码总结 常用插值缩放方法 cv2.resize()函数中的interpolation参数指定了图像缩放时使用的插值方法。以下是常用的插值方法&#xff1a; cv2.INTER_NEAREST&#xff1a;最近邻插值。该方法通过选择最接近目标像素的原始像素来进行插值。它是最…

javaEE -8(9000字详解网络编程)

一&#xff1a;网络编程基础 1.1 网络资源 所谓的网络资源&#xff0c;其实就是在网络中可以获取的各种数据资源&#xff0c;而所有的网络资源&#xff0c;都是通过网络编程来进行数据传输的。 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff…

管理类联考——英语二——阅读篇——题材:环保

文章目录 环保2017 年&#xff0c;Text 4——题材&#xff1a;环保-社会细节题-第一步定位&#xff1b;第二步原文复现细节题-推理细节题-人物观点细节题-原因-原词重现&#xff0c;同义替换细节题-人物观点-排除法 2019 年&#xff0c;Text 4——题材&#xff1a;社会-环保细节…

智慧公厕建设方案 - 点击进入

随着城市化进程的不断推进&#xff0c;传统公共厕所的管理问题变得越来越突出。封闭空间、脏乱差的环境以及管理不善所带来的恶臭和卫生问题&#xff0c;成为城市居民心中的痛点。为了解决这一问题&#xff0c;广州中期科技有限公司全新推出了智慧公厕建设方案&#xff0c;以引…

IDEA配置HTML和Thymeleaf热部署开发

IDEA配置HTML和Thymeleaf热部署开发 1.项目配置2. IDEA配置3. 使用 需求&#xff1a;现在我们在开发不分离项目的时候&#xff08;SpringBootThmeleaf&#xff09;经常会改动了类或者静态html文件就需要重启一下服务器&#xff0c; 这样不仅时间开销很大&#xff0c;而且经常重…

云数据库及RDS数据库介绍

1.云数据库概念 云数据库是指被优化或部署到一个虚拟计算环境中的数据库&#xff0c;具有按需付费、按需扩展、高可用性以及存储整合等能力。 2.云数据库特性 云数据库的特性有&#xff1a;实例创建快速、支持只读实例、读写分离、故障自动切换、数据备份、Binlog备份、SQL审…

基于OFDM的通信系统模拟实现

文章目录 前言一、OFDM 基本知识1、OFDM 理论知识及仿真2、OFDM 调制3、OFDM 解调 二、2ASK&#xff08;二进制振幅键控&#xff09;1、2ASK 基本原理①、OOK②、2ASK 2、2ASK/OOK 信号产生方法3、2ASK/OOK 信号解调方法 三、基于 OFDM 的通信系统模拟实现1、整体流程2、MATLAB…

力扣-python-两数相加

题解 1: # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # self.next nextclass Solution(object):def addTwoNumbers(self, l1, l2):""":type l1: ListNode:t…

数据结构:阶段测试(查漏补缺)

目录 选择题&#xff1a; 题一&#xff1a; 题二&#xff1a; 题三&#xff1a; 题四&#xff1a; 编程题&#xff1a; 题一&#xff1a;左叶子之和 思路一&#xff1a; 题二&#xff1a;约瑟夫问题&#xff08;用单链表实现&#xff09; 思路一&#xff1a; 本人实…