从excel导入数据并显示在反应组件中

Vik*_*shi 7 import excel reactjs

我正在尝试导入具有不同数据集的多列的 Excel 工作表,并将其显示在反应组件中。

目前我正在做,

<ReactFileReader handleFiles={this.handleFiles} fileType={'.xlsx'}>
    <button>Import</button>
    </ReactFileReader>
Run Code Online (Sandbox Code Playgroud)

进而

 handleFiles = files =>{
    var fileDisplayArea = this.refs.fileDisplayArea;
    var reader = new FileReader();
    reader.onload = function(e){
    fileDisplayArea.innerHTML = reader.result;
    }
    reader.readAsText(files[0], 'utf-8');
    }
Run Code Online (Sandbox Code Playgroud)

虽然这会导入文件,但在呈现时会显示所有垃圾字符。任何帮助将非常感激。

谢谢,

维克拉姆

Ash*_*nde 3

反应Excel渲染器

有一个完美的库专门用于此目的!它首先将 Excel 数据转换为 JSON,然后将其呈现为 HTML 表。它称为react-excel-renderer

  • 安装它 npm install react-excel-renderer --save
  • 导入ExcelRendererOutTable组件

import {ExcelRenderer, OutTable} from 'react-excel-renderer';

  • 将文件对象提供给事件处理程序中的 ExcelRenderer 函数
      fileHandler = (event) => {
    let fileObj = event.target.files[0];

    //just pass the fileObj as parameter
    ExcelRenderer(fileObj, (err, resp) => {
      if(err){
        console.log(err);            
      }
      else{
        this.setState({
          cols: resp.cols,
          rows: resp.rows
        });
      }
    });               
    }
Run Code Online (Sandbox Code Playgroud)
  • 获取 JSON 后,将其提供给 OutTable 组件

<OutTable data={this.state.rows} columns={this.state.cols} tableClassName="ExcelTable2007" tableHeaderRowClass="heading" />

就是这样 !完成 !

可以在这里找到相同的演示