如何在React.js中上传和读取CSV文件?

use*_*758 18 javascript csv user-input reactjs

我希望用户上传.csv文件,然后让浏览器能够解析该文件中的数据.我正在使用ReactJS.这怎么样?谢谢.

use*_*758 20

弄清楚了.的组合反应文件阅读器和HTML5的的FileReader(见页).

将react-document-reader位放在render中:

<ReactFileReader handleFiles={this.handleFiles} fileTypes={'.csv'}>
    <button className='btn'>Upload</button>
</ReactFileReader>
Run Code Online (Sandbox Code Playgroud)

然后上面这个.

handleFiles = files => {
    var reader = new FileReader();
    reader.onload = function(e) {
    // Use reader.result
    alert(reader.result)
    }
  reader.readAsText(files[0]);
}
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,FileReader 无法正常工作,经过一番搜索后,我不得不使用 window.FileReader 并解决了问题。 (3认同)

ttf*_*man 16

我会使用 Papa Parse ( https://www.npmjs.com/package/papaparse )。这是一个示例反应组件:

class FileReader extends React.Component {
  constructor() {
    super();
    this.state = {
      csvfile: undefined
    };
    this.updateData = this.updateData.bind(this);
  }

  handleChange = event => {
    this.setState({
      csvfile: event.target.files[0]
    });
  };

  importCSV = () => {
    const { csvfile } = this.state;
    Papa.parse(csvfile, {
      complete: this.updateData,
      header: true
    });
  };

  updateData(result) {
    var data = result.data;
    console.log(data);
  }

  render() {
    console.log(this.state.csvfile);
    return (
      <div className="App">
        <h2>Import CSV File!</h2>
        <input
          className="csv-input"
          type="file"
          ref={input => {
            this.filesInput = input;
          }}
          name="file"
          placeholder={null}
          onChange={this.handleChange}
        />
        <p />
        <button onClick={this.importCSV}> Upload now!</button>
      </div>
    );
  }
}

export default FileReader;
Run Code Online (Sandbox Code Playgroud)