【问题标题】:Importing data from excel and displaying in a react component从 excel 导入数据并在反应组件中显示
【发布时间】:2018-03-21 02:20:24
【问题描述】:

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

目前我正在做,

<ReactFileReader handleFiles={this.handleFiles} fileType={'.xlsx'}>
    <button>Import</button>
    </ReactFileReader>

然后

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

虽然这会导入文件,但在渲染时会显示所有垃圾字符。 任何帮助将不胜感激。

谢谢,

维克拉姆

【问题讨论】:

  • 您将本质上是 zip 存档的文件视为纯文本文件。那是行不通的:您需要使用一个库,该库可以以一种可以有效呈现的方式解析 xlsx 文件。
  • @TimWilliams:有道理!我想我应该将其解析为 JSON,然后使用该输出输入 reactjs 表组件。非常感谢。美好的一天!

标签: excel reactjs import


【解决方案1】:

react-excel-renderer

这里有一个完美的库!它首先将 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
        });
      }
    });               
    }
  • 获取 JSON 后,将其提供给 OutTable 组件

&lt;OutTable data={this.state.rows} columns={this.state.cols} tableClassName="ExcelTable2007" tableHeaderRowClass="heading" /&gt;

就是这样!搞定了!

可以找到相同的演示 here

【讨论】:

  • 我看到你写了这个库。披露表示赞赏。 :)
  • 嗨@Ashish。我已按照您的步骤进行操作,但这对我不起作用。请参阅下面的帖子。谢谢
猜你喜欢
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 2019-10-06
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多