首页 > 其他分享 >JS之实现Excel数据导入

JS之实现Excel数据导入

时间:2024-09-04 09:36:08浏览次数:9  
标签:xlsx const excelData Excel JS 导入 let file

1.<template>部分

<a-upload
  name="file"
  :customRequest="importExcelData"
  accept=".xls,.xlsx"
  class="uploadBtn"
  :showUploadList="false"
>
  <a-button
    type="primary"
    style="margin-right: 8px"
    :loading="uploading"
    >导入excel</a-button
  >
</a-upload>

2.导入xlsx

import * as xlsx from "xlsx";

3.<script>部分

//导入excel
const uploading = ref(false);
// 文件上传自定义
const importExcelData = async (op) => {
  uploading.value = true;

  // 获取上传的excel  并解析数据
  let file = op.file;
  let dataBinary = await readFile(file);
  let workBook = xlsx.read(dataBinary, { type: "binary", cellDates: true });

  let workSheet = workBook.Sheets[workBook.SheetNames[0]];
  const excelData = xlsx.utils.sheet_to_json(workSheet);

  let result = [];
  for (let i = 0; i < excelData.length; i++) {
    //循环excel数据,将字段名置为英文字符,值为当前项相应表头字段的值,拼成接口需要的数据格式
    // 定义要导出的
    let sheetData = {
      branch: excelData[i]["分公司"], //第i项,对应表头为楼宇名称的列值
      grid: excelData[i]["网格"],
      buildingId: excelData[i]["楼宇id"],
      buildingName: excelData[i]["楼宇名称"],
    };
    result.push(sheetData);
  }
  return new Promise((resolve, reject) => {
    GzBuildingsApi.importExcelData(result)
      .then((response) => {
        const data = response.data;
        if (data.code === 200) {
          message.success("导入成功");
          uploading.value = false;
          query();
        } else {
          message.error(data.message);
        }
      })
      .catch((error) => {});
  });
};

const readFile = (file) => {
  return new Promise((resolve) => {
    let reader = new FileReader();
    reader.readAsBinaryString(file);
    reader.onload = (ev) => {
      resolve(ev.target?.result);
    };
  });
};

 

标签:xlsx,const,excelData,Excel,JS,导入,let,file
From: https://www.cnblogs.com/luoyihao/p/18395858

相关文章

  • jstack命令详解【转】
    jstack命令详解  简介jstack命令用于打印指定Java进程、核心文件或远程调试服务器的Java线程的Java堆栈跟踪信息[1]。jstack命令可以生成JVM当前时刻的线程快照。线程快照是当前JVM内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿......
  • AWC 批量查询使用关系的最新版本并导出Excel
    1.查询使用关系的方法:*调用查询返回数据 *@param{Object}data *@returns{Promise} **/exportletqueryItemRevisionById=function(data){  if(!data.item_id){    messagingService.showInfo("请输入查询条件");    return;  ......
  • 470.海贼王动漫主题网页 大学生期末大作业 Web前端网页制作 html5+css+js
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有各行各业的Web前端网页制作的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这......
  • Windows 下 Node.js 版本管理指南:不使用 NVM 与使用 NVM 的两种方案
    文章目录方案一:不使用nvm管理NODEJS版本方案二:使用nvm管理NODEJS版本其他配置方案一:不使用nvm管理NODEJS版本NodeJs官网,NodeJs下载索引页下载较慢,不推荐这里使用v18.16.0版本,下载注意需要注册一个flowus账号登录才能下载node-v18.16.0-win-x64.zip下......
  • 当采用 JSON 格式的数据进行响应时,对象是否需要序列化取决于什么?
    目录1.使用JSON库进行序列化2.使用Java的默认序列化机制当采用JSON格式的数据进行响应时,对象是否需要序列化取决于你是如何将对象转换为JSON格式的。在Java中有两种情况:1.使用JSON库进行序列化如果你使用的是像Jackson、Gson或Fastjson这样的JSON处理库......
  • (D卷,100分)- 堆栈中的剩余数字(Java & JS & Python&C&C++)
    题目描述向一个空栈中依次存入正整数,假设入栈元素n(1<=n<=2^31-1)按顺序依次为nx…n4、n3、n2、n1,每当元素入栈时,如果n1=n2+…+ny(y的范围[2,x],1<=x<=1000),则n1~ny全部元素出栈,重新入栈新元素m(m=2*n1)。如:依次向栈存入6、1、2、3,当存入6、1、2时,栈底......
  • Python批量分割Excel后逐行做差、合并文件的方法
      本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件,首先依据某一列数据的特征截取我们需要的数据,随后对截取出来的数据逐行求差,并基于其他多个文件夹中同样大量的Excel表格文件,进行数据跨文件合并的具体方法。  首先,我们来明确一下本文的具体需......
  • 【js逆向专题】6.对称加密
    本笔记仅供学习交流使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,请各位自觉遵守相关法律法规。小节目标:了解对称加密算法种类熟悉加密算法工作模式掌握加密算法的实现方式对称加密(加密解密密钥相同):DES、3DES、AES、RC4简介对称式加密就是加......
  • 【Python自动化办公】按条件删除Excel表格数据
    本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法。首先,我们来明确一下本文的具体需求。现有一个Excel表格文件(在本文中我们就以.csv格式的文件为例),如下图所示。其中,Excel表......
  • 推荐一个支持js的嵌入式设备开发平台
    可以通过vscode开发js,实时推送js代码到设备里运行,无需编译,支持屏幕,感兴趣的可以看看https://github.com/duoxianwulian/dxdop提供很多js库,可以控制gpio,pwm,蓝牙,nfc,二维码识别,人脸识别,网络,mqtt,tcp,看门狗,ui等等,支持多线程也支持多种设备。以下是一个代码示例和效果图示例点击查......