如何使用papa-parse-angular2

时间:2017-04-28 03:32:53

标签: json angular csv data-conversion format-conversion

想要使用papa-parse-angular2将CSV转换为JSON。没有找到任何例子,所以我这样做。

  

app.module.ts

Toast.makeText(context, "your message", Toast.LENGTH_LONG).show();
  

xx.component.ts

import {CSVService} from 'papa-parse-angular2';
@NgModule({
providers: [
CSVService, ...

没有构建问题。但是当它运行时,得到了以下错误。 enter image description here

constructor( private csvService: CSVService, ...
private x1() {
    let file = ...;
    this.csvService.parse(file, {
        complete: function(results) {
          // take results.data
        }
      });

不知道如何修复。或其他libs将CSV转换为角度为4的JSON?感谢任何帮助。

4 个答案:

答案 0 :(得分:6)

您可以使用ngx-papaparse

首先安装库:

对于Angular 6(docs):

npm install ngx-papaparse --save

还有Angular 2/4Angular 5的版本。

然后将其导入您的模块(不一定是您的AppModule):

import { PapaParseModule } from 'ngx-papaparse';

@NgModule({
  ...
  imports: [
    ...
    PapaParseModule
  ]
})

解析CSV:

import { Component } from '@angular/core';
import { Papa } from 'ngx-papaparse';

@Component({
  ...
})
export class AppComponent {

    constructor(private papa: Papa) {
        let csvData = '"Hello","World!"';

        this.papa.parse(csvData,{
            complete: (result) => {
                console.log('Parsed: ', result);
            }
        });
    }
}

您还可以解析文件而不是字符串。只需将csvData替换为文件。

免责声明:我创建了这个库。

答案 1 :(得分:4)

您只需使用papaparser

import * as Papa from 'papaparse/papaparse.min.js';

使用

onUpload(file: File) {
   Papa.parse(file, {
    complete: function(results) {
        console.log("Finished:", results.data);
     }
   });
}

然而,一个缺点是你不会得到papaparse的任何类型定义

答案 2 :(得分:1)

安装papaparse@types/papaparse。这将为IDE智能感知启用类型定义。

然后,您可以导入整个papaparse模块

import * as Papa from 'papaparse'

或将所需的进口指定为

import { parse } from 'papaparse'

与第三方包装器相比,建议使用此方法,因为它们的更新频率不高或在其后面的社区工作有限。

答案 3 :(得分:0)

如下所述导入PapaParser:

import * as Papa from 'papaparse/papaparse.min.js';

然后使用:

private x1() {
 let file = ...;
  Papa.parse(file, {
  header: true,
  skipEmptyLines: true,
  complete: (results) => {
    let parsedData = results.data; 
  }
})