【问题标题】:how to import CSV file in angular 4 and stored data in Database?如何以角度 4 导入 CSV 文件并将数据存储在数据库中?
【发布时间】:2018-05-20 07:18:47
【问题描述】:

我想以 Angular 4 导入 CSV,并将数据存储在我的数据库中。

<input type="file" name="importCSV">
<button type="submit" class="btn btn-primary">Submit</button>

当我点击提交按钮时,我想将数据存储在我的表中。

【问题讨论】:

  • 看看这个answer
  • 我没有得到CSV文件的数据? @Szarik
  • @Chaudhary 让你得到答案的解决方案。
  • @VishwaPratap 我发布了我的答案,您可以根据需要更改功能。
  • @Chaudhary 感谢您的回复

标签: node.js angular angular2-forms


【解决方案1】:

你可以使用下面的自定义函数来做需要的:

private extractData(data) { // Input csv data to the function

    let csvData = data;
    let allTextLines = csvData.split(/\r\n|\n/);
    let headers = allTextLines[0].split(',');
    let lines = [];

    for ( let i = 0; i < allTextLines.length; i++) {
        // split content based on comma
        let data = allTextLines[i].split(',');
        if (data.length == headers.length) {
            let tarr = [];
            for ( let j = 0; j < headers.length; j++) {
                tarr.push(data[j]);
            }
            lines.push(tarr);
        }
    }
    console.log(lines); //The data in the form of 2 dimensional array.
  }

您可以像这样在文件侦听器函数中读取文件:

function handleFileSelect(evt) {
      var files = evt.target.files; // FileList object
      var file = files[0];
      var reader = new FileReader();
      reader.readAsText(file);
      reader.onload = function(event){
        var csv = event.target.result; // Content of CSV file
        this.extractData(csv); //Here you can call the above function.
      }

}

在html里面使用下面的代码:

<input type="file" (change)="handleFileSelect($event)"/>

【讨论】:

    【解决方案2】:

    这里是html代码。

    <input type="file" #fileImportInput name="File Upload" (change)="csvChanged($event)" id="txtFileUpload">
    

    下面是我的组件代码

    const CSVConstants = {
       tokenDelimeter: ",",
       isHeaderPresentFlag: true,
       validateHeaderAndRecordLengthFlag: true,
       valildateFileExtenstionFlag: true,
    }
    
    public csvChanged(event) {
        var files = event.target.files;
    
        if (CSVConstants.validateHeaderAndRecordLengthFlag) {
            if (!this.fileUtil.isCSVFile(files[0])) {
                this.utilService.showToastMsg("error", "Please import valid .csv file");
                this.fileReset();
                return;
            }
        }
    
        var input = event.target;
        var reader = new FileReader();
        reader.readAsText(input.files[0]);
    
        reader.onload = (data) => {
            let csvData: any = reader.result;
            let csvRecordsArray = csvData.split(/\r\n|\n/);
    
            var headerLength = -1;
            if (CSVConstants.isHeaderPresentFlag) {
                let headersRow = this.fileUtil.getHeaderArray(csvRecordsArray, CSVConstants.tokenDelimeter);
                headerLength = headersRow.length;
            }
    
            this.csvRecords = this.fileUtil.getDataRecordsArrayFromCSVFile(csvRecordsArray,
                headerLength, CSVConstants.validateHeaderAndRecordLengthFlag, CSVConstants.tokenDelimeter);
    
            if (this.csvRecords == null) {
                //If control reached here it means csv file contains error, reset file.
                this.fileReset();
            }
    
            /* Remove the file so that user can upload same one after making changes, otherwise change event
                will not be called */
            this.clearFile();
    
            /* Remove the first header row */
            this.csvRecords.splice(0, 1);
    
            this.csvRecords.map((record: any) => {
                this.external_contacts_arr.push({
                    email: record[0],
                    first_name: record[1],
                    last_name: record[2],
                    designation: record[3],
                })
            });
            this.removeBlankRecords();
            //document.getElementById(`${this.uniquePrefix}-other-tab`).click();
        }
    
        reader.onerror = () => {
            this.utilService.showToastMsg("error", 'Unable to read ' + input.files[0]);
        };
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 2021-06-27
      相关资源
      最近更新 更多