美文网首页
前端解析 CSV 文件

前端解析 CSV 文件

作者: 云上笔记 | 来源:发表于2021-05-31 17:34 被阅读0次

项目中有一个需求是上传CSV文件,解析数据然后传给后台,
打开.CSV 后缀的文件,其格式如下


CSV.png

解析过程如下(angular + ngZorro版本)

<nz-upload [nzBeforeUpload]="beforeUpload" nzAccept=".csv">
      <button nz-button nzSize="small" nzType="primary">
          <i nz-icon nzType="upload"></i>
              ImportZero Rote data
       </button>
</nz-upload>
 /**
   * 导入 csv 文件
   */
  public beforeUpload = (file: NzUploadFile): boolean => {
    this.onFileChange(file);
    return false;
  }

  /**
   * 前端解析 csv 文件
   */
  public onFileChange(file) {
    const reader = new FileReader();
    reader.readAsText(file);
    reader.onload = () => {
      const csvData = reader.result;
      const csvRecordsArray = (csvData as string).split(/\r\n|\n/);
      this.simpleCurveList = this.parseCSVFileData(csvRecordsArray);

    };
    reader.onerror = () => {
      console.log('error is occured while reading file!');
    };
  }

  /**
   * 转化数组格式
   */
  private parseCSVFileData(csvRecordsArray: any) {
    const csvArr = [];
    for (let i = 1; i < csvRecordsArray.length; i++) {
      const curruntRecord = csvRecordsArray[i].split(',');
      const csvRecord: any = {};
      // 自定义数组对象键名
      csvRecord.date = curruntRecord[0]?.trim();
      csvRecord.maturity_date = curruntRecord[1]?.trim();
      csvRecord.maturity_term = curruntRecord[2]?.trim();
      csvArr.push(csvRecord);
    }
    return csvArr;
  }

相关文章

网友评论

      本文标题:前端解析 CSV 文件

      本文链接:https://www.haomeiwen.com/subject/dhopjltx.html