首页 > 其他分享 >SheetJs 导入数据

SheetJs 导入数据

时间:2023-12-21 15:55:20浏览次数:39  
标签:index const target dataList SheetJs 导入 ls 数据

html

 <a (click)="import()">导入</a>
 <input #importExcelInput [hidden]="true" type="file" (change)="onFileChange($event)" multiple="false" />

ts

 import() {
    let input = this.importExcelInput.nativeElement;
    input.value = '';
    input.click();
  }

  //导入
  async onFileChange(evt: any) {
    this.isTableLoading = true;
    let self = this;
    return new Promise(function (resolve, reject) {
      /* wire up file reader */
      const target: DataTransfer = <DataTransfer>evt.target;
      if (target.files.length !== 1) throw new Error('无法上传多个文件');
      const reader: FileReader = new FileReader();
      reader.readAsBinaryString(target.files[0]);
      let itemList: any[] = [];
      reader.onload = async (e: any) => {
        /* read workbook */
        const bstr: string = e.target.result;
        const wb: WorkBook = read(bstr, { type: 'binary' });
        /* grab first sheet */
        const wsname: string = wb.SheetNames[0];
        const ws: WorkSheet = wb.Sheets[wsname];
        const lengthStr = ws['!ref'].split(':')[1];
        const rowLength = parseInt(lengthStr.replace(/[^\d]/g, ' '));
        for (let index = 2; index <= rowLength; index++) {
          var entity: any = {};
          entity.name = ws[`A${index}`] ? ws[`A${index}`].v.toString() : null;
          entity.num = ws[`B${index}`] === undefined ? 0 : ws[`B${index}`].v;
          entity.amount = ws[`C${index}`] === undefined ? 0 : ws[`C${index}`].v;
          entity.taxRate = ws[`D${index}`] === undefined ? TaxRateEnum['13%'] : ws[`D${index}`].v;
          if (!entity.name) {
            self.notify.error('必填项存在为空!!!,请矫正后重试');
            self.isTableLoading = false;
            reject();
            break;
          }
          var reg = /^[0-9]*$/;
          var reg2 = /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
          if (!reg.test(entity.num) || !reg2.test(entity.amount) || !reg2.test(entity.taxRate)) {
            self.notify.error('存在数字类型数据非法!!!,请矫正后重试');
            self.isTableLoading = false;
            reject();
            break;
          }

          itemList.push(entity);
          resolve(itemList);
        }
      };
    }).then(itemList => {
      //   console.log(itemList);
      this.service
        .getSparePartInfoByImport(itemList)
        .pipe(
          finalize(() => {
            this.isTableLoading = false;
          })
        )
        .subscribe(data => {
          this.notify.success('导入成功');
          var ls: any = [];
          var index = 0;
          if (this.dataList.length >= 1) {
            index = this.dataList[this.dataList.length - 1].index + 1;
          }
          data.map(i => {
            i.index = index;
            index++;
          });
          ls.push(...this.dataList);
          ls.push(...data);
          this.dataList = ls;
        });
    });
  }

 

标签:index,const,target,dataList,SheetJs,导入,ls,数据
From: https://www.cnblogs.com/sugarwxx/p/17919260.html

相关文章

  • 一些数据可以验证测试使用功能的
    INSERTINTOoffline_news(id,status,create_time)VALUES(15455114757359,0,"),2023-08-3111:24:43"),);INSERTINTOoffline_news(id,status,create_time)VALUES(24709425874357,0,"),2023-08-3111:24:43"),);INSERTINTOofflin......
  • 火山引擎ByteHouse基于云原生架构的实时导入探索与实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群随着企业降本增效、智能化数据决策需求的增强,传统的商业数据库已经难以满足和响应快速增长的业务诉求。在此背景下,云原生数据库成为大势所趋。云原生数据库基于云平台构建、部署和分发,具有高可用......
  • 大模型:高质量对话数据生成,Enhancing Chat Language Models by Scaling High-quality I
    EnhancingChatLanguageModelsbyScalingHigh-qualityInstructionalConversations论文地址1.导读不少工作已经意识到ChatGPT的秘密在于将指令微调和对其微调做到了极致,是继GPT-3后的又一次大力出奇迹。这篇文章来自清华大学5月份的工作,目的在于生成高质量的指令微调......
  • MDM主数据平台如何实现质量管控
    当企业业务以及信息化建设发展到一定阶段后,都不可避免地要进行信息化和数据的治理工作,而主数据治理则是数据治理的基础。随着信息系统和业务的增加,系统打通与数据集成共享必然会成为企业信息化建设的瓶颈,而要实现系统集成,就要保证系统中共享数据的准确性,而主数据就是最重要的共享数......
  • MDM主数据平台如何管理参考数据
    MDM基础数据管理平台是进行清洗和治理企业的主数据,使企业的主数据具有唯一性、准确性、一致性、及时性,通过主数据数据清洗功能将错误数据和重复数据进行清洗,从而保证企业数据能够做到以上那几点,然后再分发至下游系统,使企业信息化更加完善。MDM主数据管理平台作为数通的一款核心产品......
  • Matlab 之 数据元素访问
    Matlab的含义是矩阵实验室,其特征之一就是数据的向量化操作,借此提升软件运行效率。那么,必然会涉及数据元素的访问。Matlab主要支持下面一些形式的访问:(1)array-inde:A(i)(2)cell-index:C{i}(3)structfield:S.fieldname不同的访问方式,效率差别很大,我们以单个元素或者域的访问为例,探讨......
  • 数据类型
     ......
  • IoTDB数据库的使用
    网址:https://iotdb.apache.org/zh/快速上手https://iotdb.apache.org/zh/UserGuide/V1.2.x/QuickStart/QuickStart.html服务端服务端的下载页面:https://iotdb.apache.org/Download/我下载了最新的1.2.2版本。下载完整后执行批处理文件:sbin\start-standalone.bat运行时报......
  • PageOffice保存文件同时保存文件中的数据
    转载:保存数据区域数据同时保存文档保存数据区域数据同时保存文档本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。在实际应用中,例如在线签订合同的时候,合同的签订日期,......
  • Landsat7_C2_ST数据集2019年1月-2022年12月
    简介:Landsat7_C2_ST数据集是经大气校正后的地表温度数据,属于Collection2的二级数据产品,以开尔文为单位测量地球表面温度,是全球能量平衡研究和水文模拟中的重要地球物理参数。地表温度数据还有助于监测作物和植被健康状况,以及极端高温事件,如自然灾害(如火山爆发、野火)和城市热岛效......