首页 > 其他分享 >前端实现导入,导出/纯前端实现将数据导出为excel,将excel数据导入传给后端

前端实现导入,导出/纯前端实现将数据导出为excel,将excel数据导入传给后端

时间:2024-05-24 09:28:17浏览次数:12  
标签:XLSX const excel 导出 workbook 导入 reader var obj

一、下载插件(xlsx如果报错utils未定义就用下面这个版本)

npm install --save [email protected]
npm install --save [email protected]

二、页面中引入

import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';

 三、导入/导出表格内容

1.导出

exportExcel() {
      //假设你有一个名为data的数组,其中包含要导出的数据
      const data = [
        { id: 1, name: '小明', age: 18, salary: 8000 },
        { id: 2, name: '老王', age: 40, salary: 2000 },
        { id: 3, name: '李红', age: 30, salary: 4000 },
      ];
      // 设置表头
      const header = ['ID', '姓名', '年龄', '工资']; // 列标题数组
      // 将表头与数据合并,遍历data,将数组对象转为二维数组
      const dataArray = [header, ...data.map(item => [item.id, item.name, item.age, item.salary])];
      // 创建 workbook 对象
      const workbook = XLSX.utils.book_new();
      // 将数据转换为 worksheet 对象,
      //'{ skipHeader: true }':去除表格第一行,不加这个属性的话表格第一行会有一行序号
      const worksheet = XLSX.utils.json_to_sheet(dataArray, { skipHeader: true });
      // 将 worksheet 添加到 workbook 中
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
      // 将 workbook 保存为 Excel 文件
      const excelData = XLSX.write(workbook, { type: 'array', bookType: 'xlsx' });
      const blob = new Blob([excelData], { type: 'application/octet-stream' }
      );
      // data就是文件名称,可自行修改
      saveAs(blob, 'data.xlsx');
    },

2.导入

ImportData() {
      let _this = this;

      var f = event.currentTarget.files[0];
      var reader = new FileReader();
      FileReader.prototype.readAsBinaryString = function (f) {
        var binary = "";
        var wb; //读取完成的数据
        var outdata;
        var reader = new FileReader();
        reader.onload = function (e) {
          var bytes = new Uint8Array(reader.result);
          var length = bytes.byteLength;
          for (var i = 0; i < length; i++) {
            binary += String.fromCharCode(bytes[i]);
          }
          var XLSX = require("xlsx");
          wb = XLSX.read(binary, {
            type: "binary"
          });
          outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); //outdata就是你想要的东西
          console.log('上传的数据:', outdata);
          //此处可对数据进行处理
          let arr = [];
          outdata.map(v => {
            let obj = {}
            obj.id = v['ID']
            obj.name = v['姓名']
            obj.age = v['年龄']
            obj.salary = v['工资']
            arr.push(obj)
          });
          if (arr.length > 0) {
            _this.$message({
              type: "success",
              message: "上传成功"
            })
          }
          _this.list = _this.list.concat(arr)//合并原有数组                   
          return arr;
        };
        reader.readAsArrayBuffer(f);
      };
      reader.readAsBinaryString(f);
    },

标签:XLSX,const,excel,导出,workbook,导入,reader,var,obj
From: https://blog.csdn.net/weixin_48095278/article/details/139091168

相关文章

  • 03-Excel基础操作-学习笔记
    本节接着继续介绍排序工具以及一个重要内容分类汇总工具的使用。01自定义排序我们在上一节接触到了使用排序工具,对数字之类的Excel内置的程序可以通过点击操作,但是当超出Excel内置的范围又当如何应对?比如,存在如下场景:针对文字的排序,我们对销售部门所在列进行排序,顺序为“一部......
  • 探究-百万级别excel数据的导入导出
    思路:1.从数据库中读,分批次读取2.多线程去写到一个excel中,3.网页如何不卡界面的方式,下载文件界面显示进度条,不影响主界面,下载完成,网站弹出小框口提示百万级别数据导入导出如何优化?excel导入导出;痛点:1.导入百万级别数据(excel)到DB,有哪些痛点?1)一次加载百万级别数据到内存,发生OOM!2)导......
  • 记录一个按列内容拆分Excel文件的小方法
    importtkinterastkimportosimporttkinter.filedialogimporttkinter.simpledialogimportpandasaspdimporttkinter.messageboximporttkinter.ttkimporttracebackglobalcolumn,sheet_origlobalcombox_2#按内容分类defsplit_by_group():#获取需......
  • 记录一个按文档长度分割Excel文件的方法
    importtkinterastkimportpandasaspdimporttkinter.filedialogimportosimporttracebackwindows=tk.Tk()####按长度拆分——自定义函数##拆分函数defdivision_by_length(iterable,length):iterable_len=len(iterable)start=0while1:......
  • 记录一次Xlwings操作excel替换内容
    importosimporttkinter.filedialogimportxlwingsasxwclassSubstitute:path=tkinter.filedialog.askdirectory(title='!!!!!!!!!!!!!!!!!请选择excel存放路径')#修改此处替换文本,前为原文本,后为新文本,最后一组后面不需要逗号dict1={'购销合同':'买卖合同','货物运输合......
  • 2024版Pycharm导入conda环境
    旧版与新版的区别大致就是旧版借用python.exe文件来导入虚拟环境,而现在的新版本需要借用Anaconda3文件中的condabin文件夹中的conda.bat文件来导入已创建的虚拟环境。(1)进入设置(2)选择interpreter  (3)选择conda环境 首先浏览到condabin的位置,选择conda;然后点击加载环境,而......
  • 从立创导出元件原理图、封装、3D模型到AD的方法
    1.导出原理图搜索器件并点击数据手册再点击立即打开原理图里面点击导出AD,即可下载原理图文件将下载文件用AD打开,并生成原理图库将生成的原理图库文件复制到自己的原理图库即可2.导出PCB步骤同上,不再赘述3.导出3D模型这里就不能用网页版立创,在软件立创EDA里面先随便......
  • 从实验室的数据单向导出,如何防止员工数据夹带?
    实验室在进行各种实验和研究活动时,会产生多种类型的数据。这些数据是实验过程和结果的重要记录,对于科研工作的进展和成果具有重要意义。以下是一些常见的实验室产生的数据类型:1、原始实验数据:这是实验过程中直接观测或测量得到的数据,如电压、电流、温度、压力、光谱数据、质谱数......
  • Android导出所有多语言字串到表格
    这种事情当然要写脚本完成啦,不然一个一个添加嘛?!!!python脚本:##注意:##1.有些语言的符号可能会乱码,比如es--->¡---->?##2.base_strings.xml必须包含所有key值,作为基准,否则可能会楼填。##3.使用:依次将不同语言的xml文件内容复制到target_strings.xml中,运行MergeLa......
  • winform开发excel
         Excel的二次开发方法有很多,下面主要介绍一个asponse.cell的使用方法,通过winform制造excel的小软件进行处理excel。 软件主要功能是先检查三个表中数据是否正确,比如是表头及列头等,然后将切割表和材料的数据进行组合,存放到数据跟踪表里。下面是加载到内存过程  ......