javascript - 在 vue/typescript 中解析 CSV 文件

标签 javascript typescript csv vue.js

我正在读取一个 csv 文件,我正在解析它,但遇到了一些问题。

1 - 在解析文件之前,我已经有了一个包含标题字符串的数组,我想从 csv 文件中提取数据。

2- 我想解析文件,这样我也可以将数据显示到带有预定义标题的表格中。任何额外的标题都将被忽略,不会显示在表格中。

这是我的代码:

this.predefinedHeaders = ["Name", "Age", "Gender"];

readCSV(event: Event) {
  const file = (event.target as HTMLInputElement).files![0];  
  var reader = new FileReader();  
  let text = (reader.result as string).split(/\r\n|\r|\n/);  
  let lines = [];  
  for( var i=1; i<text.length; i++) {  
    var data = text[i].split(',');  
    var tarr=[];  
    for(var j=0; j<this.predefinedHeaders.length; j++) {  
      tarr.push(data[j]);  
    }  
    lines.push(tarr);  
  }  
 this.tableData = lines;  
}  
reader.readAsText(file);  

当前发生的情况是数据正在填充到表中,但不在正确的标题下。我如何将数据绑定(bind)到我的标题...注意:预定义的保证是原始标题的一部分文件。不同之处在于它不显示所有列的数据,例如其中的几个。

HTML View :

table
  thead
   tr
    th(v-for='column in predefinedColumns) {{column.name}}
  tbody
   tr(v-for='(a, index)in data')
    td(v-for='(b, index2) in a') {{data[index][index2]}}

最佳答案

您可能想使用最流行的 CSV 解析器,即 PapaParse。

深层文档的 URL:

https://www.papaparse.com/demo

这个库有各种配置选项,其中之一是“标题行”,这是您需要的精确解决方案。

要使用预定义的 header ,您可以将 header 参数设置为 true 以将所有数据解析为键值对。

示例:{ data: Papa.parse(reader.result, { header: true }) }

使用'header: true',它会将CSV文件的第一行作为CSV文件中所有行的键值

在 javaScript 应用程序中最容易实现的 NPM 包:

https://www.npmjs.com/package/papaparse

关于javascript - 在 vue/typescript 中解析 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55802612/

相关文章:

javascript - 将值分配给对象文字中的多个键

javascript - jquery "on"动态项目问题

javascript - 提交按钮不起作用/没有反应

angular - 如何对作为 viewchild 的函数进行单元测试

javascript - Angular 没有输入时如何将值设置为0

csv - AWK - 处理大型 CSV(130 亿行)以获取基于多列(复合键)的重复数据会导致内存不足错误

javascript - 按属性对嵌套对象排序不起作用

javascript - 使用 float 时如何消除垂直间隙

r - 在 R 中,将每个嵌套的数据框写入 CSV

csv - 无法在 pyspark 中显示 CSV 文件(ValueError : Some of types cannot be determined by the first 100 rows, 请重试采样)