Javascript Angular 7,如何从从输入导入的srt或csv文件中读取数据,并保存在阵列中?
谢谢大家为我贡献时间。 我试图通过输入框上传文件(csv或srt), 并保存到数组中。我成功地读取了控制台上的文件,但无法保存到阵列。 我怎么可能做到呢? 请任何人帮帮我。 这是我的密码Javascript Angular 7,如何从从输入导入的srt或csv文件中读取数据,并保存在阵列中?,javascript,angular,filereader,Javascript,Angular,Filereader,谢谢大家为我贡献时间。 我试图通过输入框上传文件(csv或srt), 并保存到数组中。我成功地读取了控制台上的文件,但无法保存到阵列。 我怎么可能做到呢? 请任何人帮帮我。 这是我的密码 public onFilechange(event: any) { let fileReader = new FileReader() //fileReader.readAsText(event.target.files[0]) let result: any file
public onFilechange(event: any) {
let fileReader = new FileReader()
//fileReader.readAsText(event.target.files[0])
let result: any
fileReader.onload = function (event) {
result = (event.target as any).result
return result
}
this.temporarySavingSubtitle = fileReader.readAsText(event.target.files[0])
console.log(this.temporarySavingSubtitle)
}
我希望能在控制台日志上看到结果,但什么也没显示。
请帮忙 从代码中,我没有找到从文件(类似于流)获取数据的方法。我相信您需要js xlsx.js(也是其他库)将文件流解析为json。获取json后,如您所述保存到数组 单页的一些关键代码
从“xlsx”导入*为xlsx;
const\u readExcelAsync=(文件)=>{
返回新承诺((解决)=>{
const reader=new FileReader();
reader.onload=(事件)=>{
常量数据=event.target.result,
wb=xlsx.read(数据,{type:'binary'}),
结果={};
wb.SheetNames.forEach(sheet=>{
const roa=xlsx.utils.sheet_to_json(wb.Sheets[sheet],{header:1});
如果(roa.length)结果[页]=roa;
});
解析(对象值(结果)[0]);
};
reader.readAsBinaryString(文件);
});
}
导出异步函数processFile(文件){
试一试{
返回wait_readExcelAsync(文件);
}捕捉(错误){
控制台日志(err);
}
}
const content=yield调用(processFile,file);//文件是event.target.files[0]
将console.log
移动到onload
是否会显示结果?@Phix是的,当console.log位于onload内部时,它会显示结果。我认为这是您的问题。onload
是异步的,您不能访问它之外的数据block@Phix对这就是为什么我想知道如何从外部访问数据…?你不能,除非你承诺。这里有很多关于异步问题的资源。