return FALSE; $r = well_tag_thread__update(array('id' => $id), $update); return $r; } function well_tag_thread_find($tagid, $page, $pagesize) { $arr = well_tag_thread__find(array('tagid' => $tagid), array('id' => -1), $page, $pagesize); return $arr; } function well_tag_thread_find_by_tid($tid, $page, $pagesize) { $arr = well_tag_thread__find(array('tid' => $tid), array(), $page, $pagesize); return $arr; } ?>javascript - Parsing CSV file in vuetypescript - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Parsing CSV file in vuetypescript - Stack Overflow

programmeradmin5浏览0评论

I am reading in a csv file and i am in the process of parsing through it but having some trouble.

1 - Before parsing the file i already have an array with strings of headers that i want to pull the data for from the csv file.

2- I want to parse the file so i can also display the data into a table with my predefined headers. And any extra headers they will be ignored from being displayed in the table.

Here is my code:

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);  

What is currently happening is that data is being populated to the table but not under the right headers.. How can i bind the data to my headers... NOTE: the predefined are guaranteed to be part of the original headers from the file. the difference is that it doesn't show data for all the columns such several of them.

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]}}

I am reading in a csv file and i am in the process of parsing through it but having some trouble.

1 - Before parsing the file i already have an array with strings of headers that i want to pull the data for from the csv file.

2- I want to parse the file so i can also display the data into a table with my predefined headers. And any extra headers they will be ignored from being displayed in the table.

Here is my code:

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);  

What is currently happening is that data is being populated to the table but not under the right headers.. How can i bind the data to my headers... NOTE: the predefined are guaranteed to be part of the original headers from the file. the difference is that it doesn't show data for all the columns such several of them.

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]}}
Share Improve this question edited Apr 23, 2019 at 0:18 bluePearl asked Apr 23, 2019 at 0:12 bluePearlbluePearl 1,2575 gold badges26 silver badges45 bronze badges 0
Add a ment  | 

2 Answers 2

Reset to default 3

You might want to use most popular CSV parser which is PapaParse.

URLs for the deep documentation:

https://www.papaparse./demo

this library has various configuration options and one of them is 'Header row' which is exact solution you need.

to use the predefined header you can supply header argument as true to have all the data parsed as key-value pairs.

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

with 'header: true', it will take first row of CSV file as key value for all the row in CSV file

NPM package for easiest implementation in javaScript app:

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

If you want to have the predefined headers and display only the table with only needed columns.

checkout this one of my example on codesandbox,

https://codesandbox.io/embed/llqmrp96pm

sample CSV file is already uploaded in the same directory so you would be able to upload it and see magic

this CSV file in there has 7 or 8 column but I am displaying only 4 columns, I assume that's what you are looking for

I see you are looking for JavaScript solution, my example is created with ReactJS and couple of NPM libraries but it is almost same as you are looking for, I believe it would be easier than anything to replicate in your code.

发布评论

评论列表(0)

  1. 暂无评论