如何使用 papa-parse-angular2
2017-04-28
9835
想要使用 papa-parse-angular2 将 CSV 转换为 JSON。没有找到任何示例,所以我这样做了。
app.module.ts
import {CSVService} from 'papa-parse-angular2';
@NgModule({
providers: [
CSVService, ...
xx.component.ts
constructor( private csvService: CSVService, ...
private x1() {
let file = ...;
this.csvService.parse(file, {
complete: function(results) {
// take results.data
}
});
Uncaught TypeError: Cannot read property 'length' of undefined
at CSVHandler.guessHeaders (vendor.bundle.js:105749)
at CSVHandler.formHeaders (vendor.bundle.js:105734)
at CSVHandler.setHeaders (vendor.bundle.js:105761)
at vendor.bundle.js:64297
at ZoneDelegate.invoke (vendor.bundle.js:137052)
at Object.onInvoke (vendor.bundle.js:4532)
at ZoneDelegate.invoke (vendor.bundle.js:137051)
at Zone.run (vendor.bundle.js:136812)
at NgZone.run (vendor.bundle.js:4401)
at vendor.bundle.js:64293
at SafeSubscriber.schedulerFn [as _next] (vendor.bundle.js:4247)
at SafeSubscriber.__tryOrUnsub (vendor.bundle.js:14620)
at SafeSubscriber.next (vendor.bundle.js:14569)
at Subscriber._next (vendor.bundle.js:14509)
at Subscriber.next (vendor.bundle.js:14473)
at EventEmitter.Subject.next (vendor.bundle.js:15308)
at EventEmitter.emit (vendor.bundle.js:4221)
不知道如何修复。或者在 angular 4 中还有其他库可以将 CSV 转换为 JSON?非常感谢您的帮助。
3个回答
您可以使用 ngx-papaparse 。
首先安装库:
对于 Angular 6( docs ):
npm install ngx-papaparse --save
还有一个适用于 Angular 2/4 和 Angular 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
替换为文件即可。
免责声明:我创建了该库。
Albert Haff
2018-02-09
您可以简单地使用 papaparser 。
import * as Papa from 'papaparse/papaparse.min.js';
使用
onUpload(file: File) {
Papa.parse(file, {
complete: function(results) {
console.log("Finished:", results.data);
}
});
}
但是,一个缺点是您不会获得任何 papaparse 的类型定义
Manpreet singh
2017-05-17
安装 papaparse 和 @types/papaparse 。这将启用 IDE intellisense 的类型定义。
然后,您可以导入整个 papaparse 模块
import * as Papa from 'papaparse'
或将所需的导入指定为
import { parse } from 'papaparse'
与第三方包装器相比,我们更推荐使用这种方法,因为它们更新频率不高,或者社区支持有限。
Kaustubh Badrike
2020-05-16